diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 88e218eb..1d93673a 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -65,56 +65,56 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index ffdc963e..f52282ba 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,8 +52,7 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse5220FalseFalseFalseFalseFalse30821252Rodax Software S.L.5.2.2.0FactuGESFactuGES5.2.2.0 - +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse5240FalseFalseFalseFalseFalse30821252Rodax Software S.L.5.2.4.0FactuGESFactuGES5.2.4.0 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index 354d35f8..4d8869cf 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 5,2,2,0 -PRODUCTVERSION 5,2,2,0 +FILEVERSION 5,2,4,0 +PRODUCTVERSION 5,2,4,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "5.2.2.0\0" + VALUE "FileVersion", "5.2.4.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "5.2.2.0\0" + VALUE "ProductVersion", "5.2.4.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 7cd60e24..a7f583f0 100644 Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 8b251f31..1641339f 100644 Binary files a/Source/GUIBase/GUIBase.res and b/Source/GUIBase/GUIBase.res differ diff --git a/Source/Informes/5/3/InfFacturaCliente.fr3 b/Source/Informes/5/3/InfFacturaCliente.fr3 index 38f9c772..8a450d97 100644 --- a/Source/Informes/5/3/InfFacturaCliente.fr3 +++ b/Source/Informes/5/3/InfFacturaCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -17,7 +17,7 @@ - + @@ -34,7 +34,7 @@ - + @@ -70,7 +70,7 @@ - + diff --git a/Source/Informes/5/3/InfPedidoProveedor.fr3 b/Source/Informes/5/3/InfPedidoProveedor.fr3 index 46f0b825..f6b0b639 100644 --- a/Source/Informes/5/3/InfPedidoProveedor.fr3 +++ b/Source/Informes/5/3/InfPedidoProveedor.fr3 @@ -1,43 +1,46 @@ - + - - - - - + + + + + - + - + - + - - - + + + - + - + - - - - - + + + + + + + + diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas index 7ffae155..ffec5573 100644 --- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas +++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas @@ -4,7 +4,7 @@ interface uses - SysUtils, uDADataTable, uEditorDBItem, + SysUtils, uDADataTable, uEditorDBItem, Classes, uControllerBase, uIDataModuleAlbaranesProveedor, uProveedoresController, uDetallesAlbaranProveedorController, uBizAlbaranesProveedor, uBizDireccionesContacto, uBizPedidosProveedor; @@ -56,6 +56,9 @@ type procedure Preview(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false); procedure Print(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false); + + function DarListaAnosAlbaranes: TStringList; + procedure FiltrarAno(AAlbaran: IBizAlbaranProveedor; ADynWhereDataTable: WideString; const Ano: String); end; TAlbaranesProveedorController = class(TControllerBase, IAlbaranesProveedorController) @@ -122,6 +125,9 @@ type procedure Preview(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false); procedure Print(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false); + function DarListaAnosAlbaranes: TStringList; + procedure FiltrarAno(AAlbaran: IBizAlbaranProveedor; ADynWhereDataTable: WideString; const Ano: String); + end; implementation @@ -136,7 +142,7 @@ uses schContactosClient_Intf, Forms, schPedidosProveedorClient_Intf, uFactuGES_App, uPedidosProveedorController, uBizDetallesPedidoProveedor, // schInventarioClient_Intf, - uArticulosController, uBizArticulos, uControllerDetallesBase, Classes, + uArticulosController, uBizArticulos, uControllerDetallesBase, schArticulosClient_Intf, uControllerDetallesArticulos, Variants, uDialogUtils, uIEditorAlbaranDevProveedor, uAlbaranesProveedorReportController; @@ -756,6 +762,11 @@ begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; +function TAlbaranesProveedorController.DarListaAnosAlbaranes: TStringList; +begin + Result := FDataModule.GetAnosItems; +end; + procedure TAlbaranesProveedorController.DescartarCambios(AAlbaran: IBizAlbaranProveedor); begin if not Assigned(AAlbaran) then @@ -1151,6 +1162,35 @@ begin Result := ASeleccionados; end; +procedure TAlbaranesProveedorController.FiltrarAno(AAlbaran: IBizAlbaranProveedor; ADynWhereDataTable: WideString; const Ano: String); +var + Condicion: TDAWhereExpression; + FechaIni: String; + FechaFin: String; + +begin + AAlbaran.DataTable.DynamicWhere.Clear; + AAlbaran.DataTable.DynamicWhere.Xml := ADynWhereDataTable; + + if (Ano <> 'Todos') then + begin + // Filtrar las facturas actuales por empresa + FechaIni := '01/01/' + Ano; + FechaFin := '31/12/' + Ano; + with AAlbaran.DataTable.DynamicWhere do + begin + // (FECHA_INICIO between FECHA_FIN) + Condicion := NewBinaryExpression(NewField('', fld_AlbaranesProveedorFECHA_ALBARAN), NewConstant(FechaIni, datString), dboGreaterOrEqual); + Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_AlbaranesProveedorFECHA_ALBARAN), NewConstant(FechaFin, datString), dboLessOrEqual), Condicion, dboAnd); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Condicion, Expression, dboAnd); + end; + end; +end; + procedure TAlbaranesProveedorController.FiltrarEmpresa(AAlbaran: IBizAlbaranProveedor); var Condicion: TDAWhereExpression; diff --git a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.dfm index 7eefca3f..fe7e4253 100644 --- a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.dfm +++ b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.dfm @@ -1,5 +1,6 @@ inherited DataModuleAlbaranesProveedor: TDataModuleAlbaranesProveedor OnCreate = DAClientDataModuleCreate + Height = 294 Width = 462 object RORemoteService: TRORemoteService Message = dmConexion.ROMessage @@ -398,4 +399,26 @@ inherited DataModuleAlbaranesProveedor: TDataModuleAlbaranesProveedor Left = 328 Top = 40 end + object tbl_ListaAnosAlbaranes: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ANO' + DataType = datString + Size = 255 + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_AlbaranesProveedor + LogicalName = 'ListaAnosAlbaranes' + IndexDefs = <> + Left = 240 + Top = 200 + end + object ds_ListaAnosAlbaranes: TDADataSource + DataSet = tbl_ListaAnosAlbaranes.Dataset + DataTable = tbl_ListaAnosAlbaranes + Left = 240 + Top = 152 + end end diff --git a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas index 3a99d753..347fefaf 100644 --- a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas @@ -20,6 +20,8 @@ type ds_AlbaranesProveedor: TDADataSource; tbl_AlbaranesProveedor_Detalles: TDAMemDataTable; ds_AlbaranesProveedor_Detalles: TDADataSource; + tbl_ListaAnosAlbaranes: TDAMemDataTable; + ds_ListaAnosAlbaranes: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private @@ -29,6 +31,7 @@ type procedure AsignarClaseNegocio(var APedido: TDAMemDataTable); virtual; public + function GetAnosItems : TStringList; function GetItems : IBizAlbaranProveedor; virtual; function GetItem(const ID : Integer) : IBizAlbaranProveedor; function NewItem : IBizAlbaranProveedor; @@ -86,6 +89,30 @@ begin end; end; +function TDataModuleAlbaranesProveedor.GetAnosItems: TStringList; +var + AListaAnos: TStringList; +begin + AListaAnos := TStringList.Create; + ShowHourglassCursor; + try + with tbl_ListaAnosAlbaranes do + begin + Open; + First; + while not eof do + begin + AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString])); + Next; + end; + Close; + end; + Result := AListaAnos; + finally + HideHourglassCursor; + end; +end; + function TDataModuleAlbaranesProveedor.GetItem(const ID: Integer): IBizAlbaranProveedor; var Condicion: TDAWhereExpression; diff --git a/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedor.pas index 169b0e0f..4cb08f38 100644 --- a/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedor.pas @@ -3,11 +3,12 @@ unit uIDataModuleAlbaranesProveedor; interface uses - uBizAlbaranesProveedor; + Classes, uBizAlbaranesProveedor; type IDataModuleAlbaranesProveedor = interface ['{2BAD8B3B-B57D-475C-B528-F82B320B2332}'] + function GetAnosItems : TStringList; function GetItems: IBizAlbaranProveedor; function GetItem(const ID : Integer) : IBizAlbaranProveedor; function NewItem : IBizAlbaranProveedor; diff --git a/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorClient_Intf.pas b/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorClient_Intf.pas index 14cd1f60..58af0b0d 100644 --- a/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorClient_Intf.pas +++ b/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorClient_Intf.pas @@ -9,13 +9,21 @@ 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_AlbaranesProveedor = '{8BE31A69-3F96-4428-A51C-774590E24FA1}'; - RID_AlbaranesProveedor_Detalles = '{87E2A4FF-4130-4DA0-BCBC-EFED39A33D83}'; + RID_ListaAnosAlbaranes = '{857403FF-F05F-49ED-90E6-ADCAAA5AB48D}'; + RID_AlbaranesProveedor = '{E29E5C9B-5EC8-4005-8662-DB5944C8A0A1}'; + RID_AlbaranesProveedor_Detalles = '{9A1F1517-1524-4C14-9620-B043565B76FC}'; { Data table names } + nme_ListaAnosAlbaranes = 'ListaAnosAlbaranes'; nme_AlbaranesProveedor = 'AlbaranesProveedor'; nme_AlbaranesProveedor_Detalles = 'AlbaranesProveedor_Detalles'; + { ListaAnosAlbaranes fields } + fld_ListaAnosAlbaranesANO = 'ANO'; + + { ListaAnosAlbaranes field indexes } + idx_ListaAnosAlbaranesANO = 0; + { AlbaranesProveedor fields } fld_AlbaranesProveedorID = 'ID'; fld_AlbaranesProveedorID_EMPRESA = 'ID_EMPRESA'; @@ -133,9 +141,44 @@ const idx_AlbaranesProveedor_DetallesID_PEDIDO = 14; type + { IListaAnosAlbaranes } + IListaAnosAlbaranes = interface(IDAStronglyTypedDataTable) + ['{1928B838-B4EA-4496-827E-9D63EABBDAE7}'] + { Property getters and setters } + function GetANOValue: String; + procedure SetANOValue(const aValue: String); + function GetANOIsNull: Boolean; + procedure SetANOIsNull(const aValue: Boolean); + + + { Properties } + property ANO: String read GetANOValue write SetANOValue; + property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull; + end; + + { TListaAnosAlbaranesDataTableRules } + TListaAnosAlbaranesDataTableRules = class(TIntfObjectDADataTableRules, IListaAnosAlbaranes) + private + protected + { Property getters and setters } + function GetANOValue: String; virtual; + procedure SetANOValue(const aValue: String); virtual; + function GetANOIsNull: Boolean; virtual; + procedure SetANOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ANO: String read GetANOValue write SetANOValue; + property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + { IAlbaranesProveedor } IAlbaranesProveedor = interface(IDAStronglyTypedDataTable) - ['{E272858C-E2C0-4D50-AD8C-16F07C262B1A}'] + ['{A2303506-30C8-4485-BFF0-ECE18AB355EC}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -626,7 +669,7 @@ type { IAlbaranesProveedor_Detalles } IAlbaranesProveedor_Detalles = interface(IDAStronglyTypedDataTable) - ['{80D018EE-3C58-4900-93BF-5571F03F2DD6}'] + ['{AB431777-BD0A-44A9-A7B4-87BE4C2FEC34}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -831,6 +874,39 @@ implementation uses Variants, uROBinaryHelpers; +{ TListaAnosAlbaranesDataTableRules } +constructor TListaAnosAlbaranesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TListaAnosAlbaranesDataTableRules.Destroy; +begin + inherited; +end; + +function TListaAnosAlbaranesDataTableRules.GetANOValue: String; +begin + result := DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString; +end; + +procedure TListaAnosAlbaranesDataTableRules.SetANOValue(const aValue: String); +begin + DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString := aValue; +end; + +function TListaAnosAlbaranesDataTableRules.GetANOIsNull: boolean; +begin + result := DataTable.Fields[idx_ListaAnosAlbaranesANO].IsNull; +end; + +procedure TListaAnosAlbaranesDataTableRules.SetANOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ListaAnosAlbaranesANO].AsVariant := Null; +end; + + { TAlbaranesProveedorDataTableRules } constructor TAlbaranesProveedorDataTableRules.Create(aDataTable: TDADataTable); var @@ -2002,6 +2078,7 @@ end; initialization + RegisterDataTableRules(RID_ListaAnosAlbaranes, TListaAnosAlbaranesDataTableRules); RegisterDataTableRules(RID_AlbaranesProveedor, TAlbaranesProveedorDataTableRules); RegisterDataTableRules(RID_AlbaranesProveedor_Detalles, TAlbaranesProveedor_DetallesDataTableRules); diff --git a/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorServer_Intf.pas b/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorServer_Intf.pas index 066fe252..00135942 100644 --- a/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorServer_Intf.pas +++ b/Source/Modulos/Albaranes de proveedor/Model/schAlbaranesProveedorServer_Intf.pas @@ -9,13 +9,48 @@ 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_AlbaranesProveedorDelta = '{77DA50AC-7040-4020-9694-EC017C25527D}'; - RID_AlbaranesProveedor_DetallesDelta = '{EF2BF457-C37A-4FBE-8014-2F3A298125C8}'; + RID_ListaAnosAlbaranesDelta = '{9953F25F-4C3F-4AB3-B6F7-F3B6BE9FC6B1}'; + RID_AlbaranesProveedorDelta = '{E8BAFAD8-0AE9-4773-B7AB-707958D400E3}'; + RID_AlbaranesProveedor_DetallesDelta = '{ABC18C65-391D-4535-9A05-F8D9D6517970}'; type + { IListaAnosAlbaranesDelta } + IListaAnosAlbaranesDelta = interface(IListaAnosAlbaranes) + ['{9953F25F-4C3F-4AB3-B6F7-F3B6BE9FC6B1}'] + { Property getters and setters } + function GetOldANOValue : String; + + { Properties } + property OldANO : String read GetOldANOValue; + end; + + { TListaAnosAlbaranesBusinessProcessorRules } + TListaAnosAlbaranesBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosAlbaranes, IListaAnosAlbaranesDelta) + private + protected + { Property getters and setters } + function GetANOValue: String; virtual; + function GetANOIsNull: Boolean; virtual; + function GetOldANOValue: String; virtual; + function GetOldANOIsNull: Boolean; virtual; + procedure SetANOValue(const aValue: String); virtual; + procedure SetANOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ANO : String read GetANOValue write SetANOValue; + property ANOIsNull : Boolean read GetANOIsNull write SetANOIsNull; + property OldANO : String read GetOldANOValue; + property OldANOIsNull : Boolean read GetOldANOIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + { IAlbaranesProveedorDelta } IAlbaranesProveedorDelta = interface(IAlbaranesProveedor) - ['{77DA50AC-7040-4020-9694-EC017C25527D}'] + ['{E8BAFAD8-0AE9-4773-B7AB-707958D400E3}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -507,7 +542,7 @@ type { IAlbaranesProveedor_DetallesDelta } IAlbaranesProveedor_DetallesDelta = interface(IAlbaranesProveedor_Detalles) - ['{EF2BF457-C37A-4FBE-8014-2F3A298125C8}'] + ['{ABC18C65-391D-4535-9A05-F8D9D6517970}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_ALBARANValue : Integer; @@ -712,6 +747,49 @@ implementation uses Variants, uROBinaryHelpers, uDAInterfaces; +{ TListaAnosAlbaranesBusinessProcessorRules } +constructor TListaAnosAlbaranesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TListaAnosAlbaranesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TListaAnosAlbaranesBusinessProcessorRules.GetANOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO]; +end; + +function TListaAnosAlbaranesBusinessProcessorRules.GetANOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO]); +end; + +function TListaAnosAlbaranesBusinessProcessorRules.GetOldANOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosAlbaranesANO]; +end; + +function TListaAnosAlbaranesBusinessProcessorRules.GetOldANOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosAlbaranesANO]); +end; + +procedure TListaAnosAlbaranesBusinessProcessorRules.SetANOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO] := aValue; +end; + +procedure TListaAnosAlbaranesBusinessProcessorRules.SetANOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO] := Null; +end; + + { TAlbaranesProveedorBusinessProcessorRules } constructor TAlbaranesProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); var @@ -2425,6 +2503,7 @@ end; initialization + RegisterBusinessProcessorRules(RID_ListaAnosAlbaranesDelta, TListaAnosAlbaranesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesProveedorDelta, TAlbaranesProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesProveedor_DetallesDelta, TAlbaranesProveedor_DetallesBusinessProcessorRules); diff --git a/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.dfm b/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.dfm index d9acfb28..8dfd2011 100644 --- a/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.dfm +++ b/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.dfm @@ -12,6 +12,32 @@ object srvAlbaranesProveedor: TsrvAlbaranesProveedor ConnectionManager = dmServer.ConnectionManager DataDictionary = DADataDictionary Datasets = < + item + Params = <> + Statements = < + item + ConnectionType = 'Interbase' + Default = True + Name = 'IBX' + SQL = + 'select ANO from'#10'(select distinct(substr(FECHA_ALBARAN, 1,4)) as ' + + 'ANO'#10'from albaranes_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select' + + ' distinct '#39'Todos'#39' as ANO'#10'from empresas'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ANO' + TableField = 'ANO' + end> + end> + Name = 'ListaAnosAlbaranes' + Fields = < + item + Name = 'ANO' + DataType = datString + Size = 255 + end> + end item Params = <> Statements = < diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.dfm index 977b1dac..4cc2209c 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.dfm +++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.dfm @@ -1,7 +1,7 @@ inherited fEditorAlbaranesProveedor: TfEditorAlbaranesProveedor Caption = 'Lista de albaranes de proveedor' ClientWidth = 606 - ExplicitWidth = 614 + ExplicitWidth = 622 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader @@ -126,12 +126,24 @@ inherited fEditorAlbaranesProveedor: TfEditorAlbaranesProveedor inherited tbxMain: TTBXToolbar ExplicitWidth = 606 end + inherited tbxFiltro: TTBXToolbar + ExplicitWidth = 362 + inherited lblAno: TTBXLabelItem + Visible = True + end + inherited cbxListaAnos: TTBXComboBoxItem + Visible = True + end + inherited sepAno: TTBXSeparatorItem + Visible = True + end + end inherited tbxMenu: TTBXToolbar ExplicitWidth = 606 end inherited TBXTMain2: TTBXToolbar - Visible = True - ExplicitWidth = 117 + Left = 362 + ExplicitLeft = 362 object TBXItem39: TTBXItem Action = actGenerarFactura DisplayMode = nbdmImageAndText @@ -160,7 +172,9 @@ inherited fEditorAlbaranesProveedor: TfEditorAlbaranesProveedor end object actGenerarFactura: TAction Caption = 'Generar factura' + Enabled = False ImageIndex = 23 + Visible = False OnExecute = actGenerarFacturaExecute OnUpdate = actGenerarFacturaUpdate end diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas index 22803dac..93316bdf 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas @@ -23,6 +23,7 @@ type TBXItem39: TTBXItem; JsListaAlbaranesNoEliminados: TJSDialog; procedure FormShow(Sender: TObject); + procedure OnListaAnosChange(Sender: TObject; const Text: string); procedure actGenerarFacturaExecute(Sender: TObject); procedure actGenerarFacturaUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); @@ -43,6 +44,7 @@ type procedure DuplicarInterno; override; procedure PrevisualizarInterno; override; procedure ImprimirInterno; override; + procedure RefrescarInterno; override; //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo @@ -79,11 +81,9 @@ end; procedure TfEditorAlbaranesProveedor.actGenerarFacturaExecute(Sender: TObject); begin -{ inherited; // GenerarFacturaProv(Albaranes.ID); - actRefrescar.Execute; -} +// actRefrescar.Execute; end; procedure TfEditorAlbaranesProveedor.actGenerarFacturaUpdate(Sender: TObject); @@ -179,6 +179,8 @@ end; procedure TfEditorAlbaranesProveedor.FormShow(Sender: TObject); begin + cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED + inherited; if not Assigned(ViewGrid) then @@ -275,6 +277,13 @@ begin end; end; +procedure TfEditorAlbaranesProveedor.OnListaAnosChange(Sender: TObject; const Text: string); +begin + Controller.FiltrarAno(Albaranes, DynWhereDataTable, Text); + if Albaranes.DataTable.Active then + RefrescarInterno; +end; + procedure TfEditorAlbaranesProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; @@ -330,17 +339,37 @@ begin } end; +procedure TfEditorAlbaranesProveedor.RefrescarInterno; +begin + //Volvemos a cargar los años de las facturas + if Assigned(FController) then + ListaAnos := FController.DarListaAnosAlbaranes; + + inherited; +end; + procedure TfEditorAlbaranesProveedor.SetController(const Value: IAlbaranesProveedorController); begin FController := Value; + + if Assigned(FController) then + ListaAnos := FController.DarListaAnosAlbaranes; end; procedure TfEditorAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor); begin FAlbaranes := Value; - dsDataTable.DataTable := FAlbaranes.DataTable; - if Assigned(ViewGrid) then - (ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes; + + if Assigned(FAlbaranes) then + begin + //Se guarda el where de la sentencia origen, por si el editor tiene filtros que + //afecten a este where y en un futuro se desea volver al where origen (filtro de año)) + DynWhereDataTable := FAlbaranes.DataTable.DynamicWhere.Xml; + + dsDataTable.DataTable := FAlbaranes.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes; + end; end; end. diff --git a/Source/Modulos/Articulos/Controller/uArticulosController.pas b/Source/Modulos/Articulos/Controller/uArticulosController.pas index ed6a4f71..26afe176 100644 --- a/Source/Modulos/Articulos/Controller/uArticulosController.pas +++ b/Source/Modulos/Articulos/Controller/uArticulosController.pas @@ -24,7 +24,7 @@ type function Nuevo : IBizArticulo; procedure Anadir(AArticulo : IBizArticulo); function Eliminar(const ID : Integer): Boolean; overload; - function Eliminar(AArticulo : IBizArticulo): Boolean; overload; + function Eliminar(AArticulo : IBizArticulo; AllItems: Boolean = false): Boolean; overload; function Guardar(AArticulo : IBizArticulo): Boolean; procedure DescartarCambios(AArticulo : IBizArticulo); function Existe(const ID: Integer) : Boolean; @@ -32,6 +32,8 @@ type procedure Preview(AArticulo : IBizArticulo); procedure Print(AArticulo : IBizArticulo); + function EsEliminable(AArticulo : IBizArticulo): Boolean; + function EsModificable(AArticulo : IBizArticulo): Boolean; procedure ElegirProveedor(AArticulo : IBizArticulo); procedure AnadirProveedor(AArticulo : IBizArticulo); procedure VerProveedor(AArticulo : IBizArticulo); @@ -71,7 +73,7 @@ type destructor Destroy; override; function Eliminar(const ID : Integer): Boolean; overload; - function Eliminar(AArticulo : IBizArticulo): Boolean; overload; + function Eliminar(AArticulo : IBizArticulo; AllItems: Boolean = false): Boolean; overload; function Guardar(AArticulo : IBizArticulo): Boolean; procedure DescartarCambios(AArticulo : IBizArticulo); virtual; function Existe(const ID: Integer) : Boolean; virtual; @@ -95,6 +97,8 @@ type function ElegirArticulos(AArticulos : IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; virtual; procedure CalcularPrecioNeto(AArticulos: IBizArticulo); + function EsEliminable(AArticulo : IBizArticulo): Boolean; + function EsModificable(AArticulo : IBizArticulo): Boolean; procedure ElegirProveedor(AArticulo : IBizArticulo); procedure AnadirProveedor(AArticulo : IBizArticulo); procedure VerProveedor(AArticulo : IBizArticulo); @@ -521,23 +525,59 @@ begin AProveedor := Nil; end; -function TArticulosController.Eliminar(AArticulo: IBizArticulo): Boolean; +function TArticulosController.Eliminar(AArticulo: IBizArticulo; AllItems: Boolean = false): Boolean; +//En el caso de eliminar almenos un elemento del conjunto se devuelve true +var + bEliminado: Boolean; + begin - Result := False; + bEliminado := False; if not Assigned(AArticulo) then - raise Exception.Create ('Articulo no asignada'); + raise Exception.Create ('AArticulo no asignado'); ShowHourglassCursor; try + if not AArticulo.DataTable.Active then + AArticulo.DataTable.Active := True; + if (AArticulo.State in dsEditModes) then AArticulo.Cancel; - AArticulo.Delete; - AArticulo.DataTable.ApplyUpdates; - HideHourglassCursor; - Result := True; - except + //Siempre eliminaremos el seleccionado + if EsEliminable(AArticulo) then + begin + AArticulo.Delete; + bEliminado := True; + end; + + //En el caso de querer eliminar todos los items del objeto AContrato + if AllItems then + begin + with AArticulo.DataTable do + begin + First; + while not EOF do + begin + if EsEliminable(AArticulo) then + begin + AArticulo.Delete; + bEliminado := True + end + else Next; + end; + end; + end; + + if bEliminado then + begin + AArticulo.DataTable.ApplyUpdates; + Result := True; + end + else + Result := False; + +{ except on E: Exception do begin AArticulo.DataTable.CancelUpdates; @@ -545,10 +585,15 @@ begin if (Pos('FOREIGN KEY', E.Message) > 0) then MessageBox(0, 'No se puede borrar este artículo porque tiene artículos', 'Atención', MB_ICONWARNING or MB_OK); end; + end + } + finally + HideHourglassCursor; end; end; -procedure TArticulosController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +procedure TArticulosController.RecibirAviso(ASujeto: ISujeto; + ADataTable: IDAStronglyTypedDataTable); begin inherited; // @@ -556,7 +601,24 @@ end; procedure TArticulosController.RecuperarObjetos(AArticulo: IBizArticulo); begin - // +// +end; + +function TArticulosController.EsEliminable(AArticulo: IBizArticulo): Boolean; +begin + if not Assigned(AArticulo) then + raise Exception.Create ('AArticulo no asignado: EsEliminable'); + + Result := True; +end; + + +function TArticulosController.EsModificable(AArticulo: IBizArticulo): Boolean; +begin + if not Assigned(AArticulo) then + raise Exception.Create ('Articulo no asignado (EsModificable)'); + + Result := True; end; function TArticulosController.SalvarImagen(AArticulo: IBizArticulo): Boolean; diff --git a/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm index eddac3cc..e764c639 100644 --- a/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm +++ b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm @@ -144,6 +144,11 @@ inherited DataModuleArticulos: TDataModuleArticulos Name = 'ELIMINADO' DataType = datSmallInt DisplayLabel = 'Eliminado' + end + item + Name = 'NOTAS' + DataType = datString + Size = 255 end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] @@ -361,6 +366,11 @@ inherited DataModuleArticulos: TDataModuleArticulos Name = 'ELIMINADO' DataType = datSmallInt DisplayLabel = 'Eliminado' + end + item + Name = 'NOTAS' + DataType = datString + Size = 255 end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas b/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas index 4206fd92..cb08801f 100644 --- a/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas +++ b/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas @@ -9,10 +9,10 @@ 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_ExisteImagen = '{6C2F7E0E-E90A-4B6C-8533-E31599B007B4}'; - RID_Articulos = '{AA24A4FF-2391-46FE-8233-F324AF19B184}'; - RID_ArticulosParaCliente = '{176B4C13-BE2D-4DF7-9A24-AF7793F1DE0F}'; - RID_ArticulosParaCompra = '{08613735-CEA3-4201-9E60-E09CC051DF7E}'; + RID_ExisteImagen = '{3AD233F0-E79E-4E31-882D-43BAE44A2158}'; + RID_Articulos = '{2F0FDE8A-B8A4-46BF-BAF7-046B4AAA8A03}'; + RID_ArticulosParaCliente = '{195AB374-2B0F-4747-8C7A-B01C0A0793E7}'; + RID_ArticulosParaCompra = '{7D256ACD-F7D1-46AF-9451-E43EFEF4DAC2}'; { Data table names } nme_ExisteImagen = 'ExisteImagen'; @@ -47,6 +47,7 @@ const fld_ArticulosID_PROVEEDOR = 'ID_PROVEEDOR'; fld_ArticulosNOMBRE_PROVEEDOR = 'NOMBRE_PROVEEDOR'; fld_ArticulosELIMINADO = 'ELIMINADO'; + fld_ArticulosNOTAS = 'NOTAS'; { Articulos field indexes } idx_ArticulosID = 0; @@ -69,6 +70,7 @@ const idx_ArticulosID_PROVEEDOR = 17; idx_ArticulosNOMBRE_PROVEEDOR = 18; idx_ArticulosELIMINADO = 19; + idx_ArticulosNOTAS = 20; { ArticulosParaCliente fields } fld_ArticulosParaClienteID = 'ID'; @@ -135,6 +137,7 @@ const fld_ArticulosParaCompraID_PROVEEDOR = 'ID_PROVEEDOR'; fld_ArticulosParaCompraNOMBRE_PROVEEDOR = 'NOMBRE_PROVEEDOR'; fld_ArticulosParaCompraELIMINADO = 'ELIMINADO'; + fld_ArticulosParaCompraNOTAS = 'NOTAS'; { ArticulosParaCompra field indexes } idx_ArticulosParaCompraID = 0; @@ -157,11 +160,12 @@ const idx_ArticulosParaCompraID_PROVEEDOR = 17; idx_ArticulosParaCompraNOMBRE_PROVEEDOR = 18; idx_ArticulosParaCompraELIMINADO = 19; + idx_ArticulosParaCompraNOTAS = 20; type { IExisteImagen } IExisteImagen = interface(IDAStronglyTypedDataTable) - ['{874B7ED1-AAA1-44E0-B59D-EA38F57AB696}'] + ['{749AADD1-83B8-48EB-A064-49602BFF17AD}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -196,7 +200,7 @@ type { IArticulos } IArticulos = interface(IDAStronglyTypedDataTable) - ['{0225A8BE-488D-4E3E-9F29-F20D572DB3AC}'] + ['{C7114081-6A85-4579-A1BB-1BA1D5A37528}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -277,6 +281,10 @@ type procedure SetELIMINADOValue(const aValue: SmallInt); function GetELIMINADOIsNull: Boolean; procedure SetELIMINADOIsNull(const aValue: Boolean); + function GetNOTASValue: String; + procedure SetNOTASValue(const aValue: String); + function GetNOTASIsNull: Boolean; + procedure SetNOTASIsNull(const aValue: Boolean); { Properties } @@ -320,6 +328,8 @@ type property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull; property ELIMINADO: SmallInt read GetELIMINADOValue write SetELIMINADOValue; property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull: Boolean read GetNOTASIsNull write SetNOTASIsNull; end; { TArticulosDataTableRules } @@ -408,6 +418,10 @@ type procedure SetELIMINADOValue(const aValue: SmallInt); virtual; function GetELIMINADOIsNull: Boolean; virtual; procedure SetELIMINADOIsNull(const aValue: Boolean); virtual; + function GetNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetNOTASIsNull: Boolean; virtual; + procedure SetNOTASIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -450,6 +464,8 @@ type property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull; property ELIMINADO: SmallInt read GetELIMINADOValue write SetELIMINADOValue; property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull: Boolean read GetNOTASIsNull write SetNOTASIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -459,7 +475,7 @@ type { IArticulosParaCliente } IArticulosParaCliente = interface(IDAStronglyTypedDataTable) - ['{E71B995E-B1A3-46EB-B6C2-500411054A5C}'] + ['{3879CF1A-00FB-4CD5-A2B4-5AFA21731234}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -722,7 +738,7 @@ type { IArticulosParaCompra } IArticulosParaCompra = interface(IDAStronglyTypedDataTable) - ['{8029B31F-8C96-457B-B9A5-944E16A3BE2C}'] + ['{9E50D976-2A70-4B10-ABD0-82D86C23BD36}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -803,6 +819,10 @@ type procedure SetELIMINADOValue(const aValue: SmallInt); function GetELIMINADOIsNull: Boolean; procedure SetELIMINADOIsNull(const aValue: Boolean); + function GetNOTASValue: String; + procedure SetNOTASValue(const aValue: String); + function GetNOTASIsNull: Boolean; + procedure SetNOTASIsNull(const aValue: Boolean); { Properties } @@ -846,6 +866,8 @@ type property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull; property ELIMINADO: SmallInt read GetELIMINADOValue write SetELIMINADOValue; property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull: Boolean read GetNOTASIsNull write SetNOTASIsNull; end; { TArticulosParaCompraDataTableRules } @@ -934,6 +956,10 @@ type procedure SetELIMINADOValue(const aValue: SmallInt); virtual; function GetELIMINADOIsNull: Boolean; virtual; procedure SetELIMINADOIsNull(const aValue: Boolean); virtual; + function GetNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetNOTASIsNull: Boolean; virtual; + procedure SetNOTASIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -976,6 +1002,8 @@ type property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull; property ELIMINADO: SmallInt read GetELIMINADOValue write SetELIMINADOValue; property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull: Boolean read GetNOTASIsNull write SetNOTASIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -1462,6 +1490,27 @@ begin DataTable.Fields[idx_ArticulosELIMINADO].AsVariant := Null; end; +function TArticulosDataTableRules.GetNOTASValue: String; +begin + result := DataTable.Fields[idx_ArticulosNOTAS].AsString; +end; + +procedure TArticulosDataTableRules.SetNOTASValue(const aValue: String); +begin + DataTable.Fields[idx_ArticulosNOTAS].AsString := aValue; +end; + +function TArticulosDataTableRules.GetNOTASIsNull: boolean; +begin + result := DataTable.Fields[idx_ArticulosNOTAS].IsNull; +end; + +procedure TArticulosDataTableRules.SetNOTASIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ArticulosNOTAS].AsVariant := Null; +end; + { TArticulosParaClienteDataTableRules } constructor TArticulosParaClienteDataTableRules.Create(aDataTable: TDADataTable); @@ -2348,6 +2397,27 @@ begin DataTable.Fields[idx_ArticulosParaCompraELIMINADO].AsVariant := Null; end; +function TArticulosParaCompraDataTableRules.GetNOTASValue: String; +begin + result := DataTable.Fields[idx_ArticulosParaCompraNOTAS].AsString; +end; + +procedure TArticulosParaCompraDataTableRules.SetNOTASValue(const aValue: String); +begin + DataTable.Fields[idx_ArticulosParaCompraNOTAS].AsString := aValue; +end; + +function TArticulosParaCompraDataTableRules.GetNOTASIsNull: boolean; +begin + result := DataTable.Fields[idx_ArticulosParaCompraNOTAS].IsNull; +end; + +procedure TArticulosParaCompraDataTableRules.SetNOTASIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ArticulosParaCompraNOTAS].AsVariant := Null; +end; + initialization RegisterDataTableRules(RID_ExisteImagen, TExisteImagenDataTableRules); diff --git a/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas b/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas index 018096ea..5e811d48 100644 --- a/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas +++ b/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas @@ -9,15 +9,15 @@ 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_ExisteImagenDelta = '{B5A896BC-5ED5-4B7B-9396-00A8DB188F84}'; - RID_ArticulosDelta = '{1BECC0A2-1504-4295-854F-19BE88F4B763}'; - RID_ArticulosParaClienteDelta = '{97D0F613-D68C-4EAE-A832-E936284A664D}'; - RID_ArticulosParaCompraDelta = '{0500756A-6CF4-4EE5-8A82-C3409D6C69AC}'; + RID_ExisteImagenDelta = '{394E1C02-44F5-4370-AB37-58AB68E6F75A}'; + RID_ArticulosDelta = '{3D55AF84-A384-48E7-A570-7D4A14EE4B9D}'; + RID_ArticulosParaClienteDelta = '{A6BBA92D-0313-47A2-9C8C-DC429B161D37}'; + RID_ArticulosParaCompraDelta = '{1CB7CDD3-8EF0-44BA-976B-CF992ABF4D00}'; type { IExisteImagenDelta } IExisteImagenDelta = interface(IExisteImagen) - ['{B5A896BC-5ED5-4B7B-9396-00A8DB188F84}'] + ['{394E1C02-44F5-4370-AB37-58AB68E6F75A}'] { Property getters and setters } function GetOldIDValue : Integer; @@ -51,7 +51,7 @@ type { IArticulosDelta } IArticulosDelta = interface(IArticulos) - ['{1BECC0A2-1504-4295-854F-19BE88F4B763}'] + ['{3D55AF84-A384-48E7-A570-7D4A14EE4B9D}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -73,6 +73,7 @@ type function GetOldID_PROVEEDORValue : Integer; function GetOldNOMBRE_PROVEEDORValue : String; function GetOldELIMINADOValue : SmallInt; + function GetOldNOTASValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -95,6 +96,7 @@ type property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue; property OldELIMINADO : SmallInt read GetOldELIMINADOValue; + property OldNOTAS : String read GetOldNOTASValue; end; { TArticulosBusinessProcessorRules } @@ -223,6 +225,12 @@ type function GetOldELIMINADOIsNull: Boolean; virtual; procedure SetELIMINADOValue(const aValue: SmallInt); virtual; procedure SetELIMINADOIsNull(const aValue: Boolean); virtual; + function GetNOTASValue: String; virtual; + function GetNOTASIsNull: Boolean; virtual; + function GetOldNOTASValue: String; virtual; + function GetOldNOTASIsNull: Boolean; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + procedure SetNOTASIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -305,6 +313,10 @@ type property ELIMINADOIsNull : Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; property OldELIMINADO : SmallInt read GetOldELIMINADOValue; property OldELIMINADOIsNull : Boolean read GetOldELIMINADOIsNull; + property NOTAS : String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull : Boolean read GetNOTASIsNull write SetNOTASIsNull; + property OldNOTAS : String read GetOldNOTASValue; + property OldNOTASIsNull : Boolean read GetOldNOTASIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -314,7 +326,7 @@ type { IArticulosParaClienteDelta } IArticulosParaClienteDelta = interface(IArticulosParaCliente) - ['{97D0F613-D68C-4EAE-A832-E936284A664D}'] + ['{A6BBA92D-0313-47A2-9C8C-DC429B161D37}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -577,7 +589,7 @@ type { IArticulosParaCompraDelta } IArticulosParaCompraDelta = interface(IArticulosParaCompra) - ['{0500756A-6CF4-4EE5-8A82-C3409D6C69AC}'] + ['{1CB7CDD3-8EF0-44BA-976B-CF992ABF4D00}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -599,6 +611,7 @@ type function GetOldID_PROVEEDORValue : Integer; function GetOldNOMBRE_PROVEEDORValue : String; function GetOldELIMINADOValue : SmallInt; + function GetOldNOTASValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -621,6 +634,7 @@ type property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue; property OldELIMINADO : SmallInt read GetOldELIMINADOValue; + property OldNOTAS : String read GetOldNOTASValue; end; { TArticulosParaCompraBusinessProcessorRules } @@ -749,6 +763,12 @@ type function GetOldELIMINADOIsNull: Boolean; virtual; procedure SetELIMINADOValue(const aValue: SmallInt); virtual; procedure SetELIMINADOIsNull(const aValue: Boolean); virtual; + function GetNOTASValue: String; virtual; + function GetNOTASIsNull: Boolean; virtual; + function GetOldNOTASValue: String; virtual; + function GetOldNOTASIsNull: Boolean; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + procedure SetNOTASIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -831,6 +851,10 @@ type property ELIMINADOIsNull : Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull; property OldELIMINADO : SmallInt read GetOldELIMINADOValue; property OldELIMINADOIsNull : Boolean read GetOldELIMINADOIsNull; + property NOTAS : String read GetNOTASValue write SetNOTASValue; + property NOTASIsNull : Boolean read GetNOTASIsNull write SetNOTASIsNull; + property OldNOTAS : String read GetOldNOTASValue; + property OldNOTASIsNull : Boolean read GetOldNOTASIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -1529,6 +1553,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosELIMINADO] := Null; end; +function TArticulosBusinessProcessorRules.GetNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOTAS]; +end; + +function TArticulosBusinessProcessorRules.GetNOTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOTAS]); +end; + +function TArticulosBusinessProcessorRules.GetOldNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosNOTAS]; +end; + +function TArticulosBusinessProcessorRules.GetOldNOTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosNOTAS]); +end; + +procedure TArticulosBusinessProcessorRules.SetNOTASValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOTAS] := aValue; +end; + +procedure TArticulosBusinessProcessorRules.SetNOTASIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOTAS] := Null; +end; + { TArticulosParaClienteBusinessProcessorRules } constructor TArticulosParaClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); @@ -2817,6 +2872,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaCompraELIMINADO] := Null; end; +function TArticulosParaCompraBusinessProcessorRules.GetNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaCompraNOTAS]; +end; + +function TArticulosParaCompraBusinessProcessorRules.GetNOTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaCompraNOTAS]); +end; + +function TArticulosParaCompraBusinessProcessorRules.GetOldNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaCompraNOTAS]; +end; + +function TArticulosParaCompraBusinessProcessorRules.GetOldNOTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaCompraNOTAS]); +end; + +procedure TArticulosParaCompraBusinessProcessorRules.SetNOTASValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaCompraNOTAS] := aValue; +end; + +procedure TArticulosParaCompraBusinessProcessorRules.SetNOTASIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaCompraNOTAS] := Null; +end; + initialization RegisterBusinessProcessorRules(RID_ExisteImagenDelta, TExisteImagenBusinessProcessorRules); diff --git a/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm b/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm index 3118cf1c..c2d73e84 100644 --- a/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm +++ b/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm @@ -53,7 +53,7 @@ object PluginArticulos: TPluginArticulos Left = 40 Top = 16 object N1: TMenuItem - Caption = 'Datos' + Caption = 'Log'#237'stica' object Articulos1: TMenuItem Tag = 1000 Action = actArticulos diff --git a/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm index 0b6ed8df..0a1a8f15 100644 --- a/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm +++ b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm @@ -234,6 +234,10 @@ object srvArticulos: TsrvArticulos item DatasetField = 'PRECIO_PVP' TableField = 'PRECIO_PVP' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' end> end> Name = 'Articulos' @@ -346,6 +350,11 @@ object srvArticulos: TsrvArticulos Name = 'ELIMINADO' DataType = datSmallInt DisplayLabel = 'Eliminado' + end + item + Name = 'NOTAS' + DataType = datString + Size = 255 end> end item @@ -565,9 +574,9 @@ object srvArticulos: TsrvArticulos 'CUENTO,'#10' V_ARTICULOS.PRECIO_NETO,'#10' V_ARTICULOS.PRECI' + 'O_PVP,'#10' V_ARTICULOS.INVENTARIABLE,'#10' V_ARTICULOS.ID_P' + 'ROVEEDOR,'#10' V_ARTICULOS.NOMBRE_PROVEEDOR as NOMBRE_PROVEEDO' + - 'R,'#10' V_ARTICULOS.ELIMINADO'#10'FROM V_ARTICULOS'#10'LEFT JOIN PROVE' + - 'EDORES_DATOS'#10'ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_ARTICULOS.ID' + - '_PROVEEDOR)'#10'where {where}'#10 + 'R,'#10' V_ARTICULOS.ELIMINADO,'#10' V_ARTICULOS.NOTAS'#10'FROM V' + + '_ARTICULOS'#10'LEFT JOIN PROVEEDORES_DATOS'#10'ON (PROVEEDORES_DATOS.ID_' + + 'PROVEEDOR = V_ARTICULOS.ID_PROVEEDOR)'#10'where {where}'#10 StatementType = stSQL ColumnMappings = < item @@ -649,6 +658,10 @@ object srvArticulos: TsrvArticulos item DatasetField = 'PRECIO_PVP' TableField = 'PRECIO_PVP' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' end> end> Name = 'ArticulosParaCompra' @@ -741,6 +754,11 @@ object srvArticulos: TsrvArticulos Name = 'ELIMINADO' DataType = datSmallInt DisplayLabel = 'Eliminado' + end + item + Name = 'NOTAS' + DataType = datString + Size = 255 end> end> JoinDataTables = <> @@ -833,6 +851,12 @@ object srvArticulos: TsrvArticulos Name = 'ELIMINADO' DataType = datSmallInt Value = '' + end + item + Name = 'NOTAS' + DataType = datString + Size = 255 + Value = '' end> Statements = < item @@ -842,12 +866,12 @@ object srvArticulos: TsrvArticulos 'INSERT'#10' INTO ARTICULOS'#10' (ID, ID_EMPRESA, REFERENCIA, DESCRIP' + 'CION, FAMILIA,'#10' COMISIONABLE, FECHA_ALTA, USUARIO,'#10' PREC' + 'IO_COSTE, PRECIO_PORTE, DESCUENTO, ID_PROVEEDOR, '#10' PRECIO_NE' + - 'TO, PRECIO_PVP, REFERENCIA_PROV, INVENTARIABLE, ELIMINADO)'#10' VAL' + - 'UES'#10' (:ID, :ID_EMPRESA, :REFERENCIA, :DESCRIPCION, :FAMILIA, ' + - #10' :COMISIONABLE, CURRENT_TIMESTAMP,'#10' :USUARIO, :PRECIO_C' + - 'OSTE, :PRECIO_PORTE, :DESCUENTO, '#10' :ID_PROVEEDOR, :PRECIO_NE' + - 'TO, :PRECIO_PVP, :REFERENCIA_PROV,'#10' :INVENTARIABLE, :ELIMINA' + - 'DO)'#10 + 'TO, PRECIO_PVP, REFERENCIA_PROV, INVENTARIABLE, ELIMINADO, NOTAS' + + ')'#10' VALUES'#10' (:ID, :ID_EMPRESA, :REFERENCIA, :DESCRIPCION, :FA' + + 'MILIA, '#10' :COMISIONABLE, CURRENT_TIMESTAMP,'#10' :USUARIO, :P' + + 'RECIO_COSTE, :PRECIO_PORTE, :DESCUENTO, '#10' :ID_PROVEEDOR, :PR' + + 'ECIO_NETO, :PRECIO_PVP, :REFERENCIA_PROV,'#10' :INVENTARIABLE, :' + + 'ELIMINADO, :NOTAS)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -994,6 +1018,12 @@ object srvArticulos: TsrvArticulos DataType = datSmallInt Value = '' end + item + Name = 'NOTAS' + DataType = datString + Size = 255 + Value = '' + end item Name = 'OLD_ID' Value = '' @@ -1011,7 +1041,8 @@ object srvArticulos: TsrvArticulos 'DESCUENTO = :DESCUENTO, '#10' ID_PROVEEDOR = :ID_PROVEEDOR, '#10' ' + 'PRECIO_NETO = :PRECIO_NETO,'#10' PRECIO_PVP = :PRECIO_PVP,'#10' IN' + 'VENTARIABLE = :INVENTARIABLE,'#10' REFERENCIA_PROV = :REFERENCIA_' + - 'PROV,'#10' ELIMINADO = :ELIMINADO'#10' WHERE'#10' (ID = :OLD_ID)'#10 + 'PROV,'#10' ELIMINADO = :ELIMINADO,'#10' NOTAS = :NOTAS'#10' WHERE'#10' ' + + ' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.dfm b/Source/Modulos/Articulos/Views/uEditorArticulo.dfm index c5a685f1..768c5735 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulo.dfm +++ b/Source/Modulos/Articulos/Views/uEditorArticulo.dfm @@ -4,20 +4,20 @@ inherited fEditorArticulo: TfEditorArticulo HorzScrollBar.Visible = False VertScrollBar.Visible = False Caption = 'Ficha de art'#237'culo' - ClientHeight = 480 - ClientWidth = 624 + ClientHeight = 646 + ClientWidth = 972 Scaled = False OnClose = CustomEditorClose - ExplicitWidth = 632 - ExplicitHeight = 514 + ExplicitWidth = 988 + ExplicitHeight = 684 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader - Width = 624 + Width = 972 Caption = 'Art'#237'culo' - ExplicitWidth = 624 + ExplicitWidth = 972 inherited Image1: TImage - Left = 597 + Left = 945 Picture.Data = { 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 00001C0806000000720DDF940000000970485973000017120000171201679FD2 @@ -34,12 +34,18 @@ inherited fEditorArticulo: TfEditorArticulo 4495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E44AE426082} ExplicitLeft = 607 end + inherited lblDesbloquear: TcxLabel + Left = 847 + ExplicitLeft = 847 + AnchorX = 892 + AnchorY = 14 + end end inherited TBXDock: TTBXDock - Width = 624 - ExplicitWidth = 624 + Width = 972 + ExplicitWidth = 972 inherited tbxMain: TTBXToolbar - ExplicitWidth = 400 + ExplicitWidth = 423 inherited TBXItem2: TTBXItem Visible = False end @@ -61,7 +67,7 @@ inherited fEditorArticulo: TfEditorArticulo end inherited tbxMenu: TTBXToolbar DockPos = 0 - ExplicitWidth = 624 + ExplicitWidth = 972 inherited TBXSubmenuItem4: TTBXSubmenuItem inherited TBXItem8: TTBXItem Visible = False @@ -96,32 +102,34 @@ inherited fEditorArticulo: TfEditorArticulo end end inherited StatusBar: TJvStatusBar - Top = 461 - Width = 624 + Top = 627 + Width = 972 Panels = < item Width = 200 end> - ExplicitTop = 461 - ExplicitWidth = 624 + ExplicitTop = 627 + ExplicitWidth = 972 end inherited pgPaginas: TPageControl - Width = 618 - Height = 349 - ExplicitWidth = 618 - ExplicitHeight = 349 + Width = 966 + Height = 513 + ExplicitTop = 111 + ExplicitWidth = 966 + ExplicitHeight = 513 inherited pagGeneral: TTabSheet ExplicitLeft = 4 ExplicitTop = 24 - ExplicitWidth = 610 - ExplicitHeight = 321 + ExplicitWidth = 958 + ExplicitHeight = 485 end end inherited PnlComentario: TPanel - Width = 624 - ExplicitWidth = 624 + Width = 972 + ExplicitTop = 78 + ExplicitWidth = 972 inherited lbComentario: TLabel - Width = 614 + Width = 962 Height = 25 end end diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.pas b/Source/Modulos/Articulos/Views/uEditorArticulo.pas index f3159831..c0bc7021 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulo.pas +++ b/Source/Modulos/Articulos/Views/uEditorArticulo.pas @@ -13,7 +13,8 @@ uses JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, uViewArticulos, uIEditorArticulo, uArticulosController, JvExComCtrls, - JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces; + JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces, cxControls, cxContainer, + cxEdit, cxLabel; type TfEditorArticulo = class(TfEditorDBItem, IEditorArticulo) diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm index 88875677..651760ac 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm @@ -26,7 +26,7 @@ inherited fEditorArticulos: TfEditorArticulos end inherited TBXDock: TTBXDock inherited tbxFiltro: TTBXToolbar - ExplicitWidth = 319 + ExplicitWidth = 320 inherited tbxEditFiltro: TTBXEditItem EditOptions = [tboUseEditWhenVertical] end @@ -39,9 +39,9 @@ inherited fEditorArticulos: TfEditorArticulos end end inherited TBXTMain2: TTBXToolbar - Left = 319 + Left = 320 DockPos = 275 - ExplicitLeft = 319 + ExplicitLeft = 320 end end inherited EditorActionList: TActionList @@ -1422,4 +1422,306 @@ inherited fEditorArticulos: TfEditorArticulos end> Bitmap = {} end + object JsListaArticulosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes pedidos no han podido ser eliminados, porque tien' + + 'en albaranes asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end end diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.pas b/Source/Modulos/Articulos/Views/uEditorArticulos.pas index f8b1594d..64503242 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulos.pas +++ b/Source/Modulos/Articulos/Views/uEditorArticulos.pas @@ -12,13 +12,15 @@ uses JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, pngimage, uIEditorArticulos, uEditorGridBase, JvComponentBase, uViewGridBase, uArticulosController, JvExComCtrls, - JvStatusBar, uDAInterfaces; + JvStatusBar, uDAInterfaces, JSDialog; type TfEditorArticulos = class(TfEditorGridBase, IEditorArticulos) actFamilias: TAction; + JsListaArticulosNoEliminados: TJSDialog; procedure FormShow(Sender: TObject); procedure actFamiliasExecute(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); private FArticulos: IBizArticulo; FController : IArticulosController; @@ -52,7 +54,7 @@ implementation uses uCustomEditor, uDataModuleArticulos, uDataModuleUsuarios, uFactuGES_App, uEditorArticulo, uEditorDBBase, uBizFamilias, uFamiliasController, - cxGrid, cxGridCustomTableView; //, uListaArticulos; + cxGrid, uGridUtils, uDBSelectionListUtils, cxGridCustomTableView; //, uListaArticulos; {$R *.dfm} @@ -152,15 +154,52 @@ begin end; procedure TfEditorArticulos.EliminarInterno; +var + AArticulos: IBizArticulo; + AllItems: Boolean; begin - if (Application.MessageBox('¿Desea borrar este artículo?, si hay unidades de este articulo en el almacén serán borradas.', 'Atención', MB_YESNO) = IDYES) then + AArticulos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then begin - inherited; - //Para que en el caso de no poderse realizar la operación se refresquen - //los datos y no nos permita eliminar un registro a la segunda - if not FController.Eliminar(Articulos) then - actRefrescar.Execute; + if (Application.MessageBox('¿Desea borrar los artículos seleccionados?, , si hay unidades de estos articulos en el almacén serán borradas.', 'Atención', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords); + AArticulos := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo; + end + end + else begin + if (Application.MessageBox('¿Desea borrar este artículo?, si hay unidades de este articulo en el almacén serán borradas.', 'Atención', MB_YESNO) = IDYES) then + AArticulos := Articulos; end; + + if Assigned(AArticulos) then + begin + FController.Eliminar(AArticulos, AllItems); + if AllItems then + begin + if (AArticulos.DataTable.RecordCount > 0) then + begin + with AArticulos.DataTable do + begin + First; + while not EOF do + begin + JsListaArticulosNoEliminados.Content.Add('Ref. articulo: ' + AArticulos.REFERENCIA + ' ' + AArticulos.DESCRIPCION); + Next; + end; + end; + JsListaArticulosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; end; procedure TfEditorArticulos.actFamiliasExecute(Sender: TObject); @@ -178,6 +217,14 @@ begin end; end; +procedure TfEditorArticulos.actModificarUpdate(Sender: TObject); +begin + inherited; + if (ViewGrid.NumSeleccionados <> 1) + or (not Controller.EsModificable(FArticulos)) then + (Sender as TAction).Enabled := False; +end; + procedure TfEditorArticulos.AsignarVista; begin ViewGrid := CreateView(TfrViewArticulos) as IViewArticulos; diff --git a/Source/Modulos/Articulos/Views/uViewArticulo.dfm b/Source/Modulos/Articulos/Views/uViewArticulo.dfm index f32db3e4..359da2f6 100644 --- a/Source/Modulos/Articulos/Views/uViewArticulo.dfm +++ b/Source/Modulos/Articulos/Views/uViewArticulo.dfm @@ -1,6 +1,6 @@ inherited frViewArticulo: TfrViewArticulo - Width = 814 - Height = 450 + Width = 1412 + Height = 634 Align = alClient OnCreate = CustomViewCreate OnDestroy = CustomViewDestroy @@ -10,19 +10,20 @@ inherited frViewArticulo: TfrViewArticulo object dxLayoutControlArticulo: TdxLayoutControl Left = 0 Top = 0 - Width = 814 - Height = 393 - Align = alTop + Width = 1412 + Height = 634 + Align = alClient ParentBackground = True TabOrder = 0 TabStop = False - AutoContentSizes = [acsWidth] + AutoContentSizes = [acsWidth, acsHeight] ExplicitWidth = 451 + ExplicitHeight = 304 DesignSize = ( - 814 - 393) + 1412 + 634) object PngSpeedButton2: TPngSpeedButton - Left = 752 + Left = 1321 Top = 28 Width = 23 Height = 22 @@ -49,8 +50,8 @@ inherited frViewArticulo: TfrViewArticulo PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] end object PngSpeedButton1: TPngSpeedButton - Left = 752 - Top = 56 + Left = 1350 + Top = 28 Width = 23 Height = 22 Action = actEliminar @@ -98,8 +99,8 @@ inherited frViewArticulo: TfrViewArticulo Width = 108 end object eNoComisionable: TcxDBCheckBox - Left = 103 - Top = 136 + Left = 424 + Top = 109 Caption = 'Art'#237'culo no comisionable' DataBinding.DataField = 'COMISIONABLE' DataBinding.DataSource = dsViewArticulo @@ -122,8 +123,10 @@ inherited frViewArticulo: TfrViewArticulo Width = 144 end object eImagen: TcxImage - Left = 477 - Top = 28 + Left = 708 + Top = 56 + Align = alClient + AutoSize = True Properties.GraphicClassName = 'TJPEGImage' Properties.PopupMenuLayout.MenuItems = [] Properties.Stretch = True @@ -138,9 +141,9 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 5 - Height = 100 - Width = 140 + TabOrder = 13 + Height = 553 + Width = 500 end object cbFamilia: TcxDBComboBox Left = 103 @@ -168,21 +171,29 @@ inherited frViewArticulo: TfrViewArticulo Width = 70 end inline frViewDatosYSeleccionProveedor1: TfrViewDatosYSeleccionProveedor - Left = 425 + Left = 22 Top = 193 - Width = 350 - Height = 202 + Width = 656 + Height = 277 + Align = alClient Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 12 + TabOrder = 6 ReadOnly = False - ExplicitLeft = 425 + ExplicitLeft = 22 ExplicitTop = 193 + ExplicitWidth = 656 + ExplicitHeight = 277 inherited dxLayoutControl1: TdxLayoutControl + Width = 656 + Height = 277 + Align = alClient + ExplicitWidth = 656 + ExplicitHeight = 277 inherited edtNIFCIF: TcxDBTextEdit ExplicitWidth = 562 Width = 562 @@ -199,11 +210,31 @@ inherited frViewArticulo: TfrViewArticulo ExplicitWidth = 327 Width = 327 end + inherited edtCodigoPostal: TcxDBTextEdit + Left = 564 + ExplicitLeft = 564 + end + inherited Button1: TBitBtn + Width = 140 + ExplicitWidth = 140 + end + inherited Button2: TBitBtn + Left = 156 + Width = 160 + ExplicitLeft = 156 + ExplicitWidth = 160 + end + inherited Button3: TBitBtn + Left = 436 + Width = 210 + ExplicitLeft = 436 + ExplicitWidth = 210 + end end end object eReferenciaProv: TcxDBTextEdit Left = 103 - Top = 193 + Top = 506 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'REFERENCIA_PROV' DataBinding.DataSource = dsViewArticulo @@ -215,12 +246,12 @@ inherited frViewArticulo: TfrViewArticulo StyleDisabled.LookAndFeel.NativeStyle = True StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 6 + TabOrder = 7 Width = 86 end object ePrecioCoste: TcxDBCurrencyEdit Left = 103 - Top = 220 + Top = 533 DataBinding.DataField = 'PRECIO_COSTE' DataBinding.DataSource = dsViewArticulo Properties.Alignment.Horz = taRightJustify @@ -235,12 +266,12 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 7 + TabOrder = 8 Width = 86 end object eDescuento: TcxDBSpinEdit Left = 103 - Top = 247 + Top = 560 DataBinding.DataField = 'DESCUENTO' DataBinding.DataSource = dsViewArticulo Properties.Alignment.Horz = taRightJustify @@ -258,12 +289,12 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 8 + TabOrder = 9 Width = 86 end object ePrecioNeto: TcxDBCurrencyEdit Left = 103 - Top = 274 + Top = 587 DataBinding.DataField = 'PRECIO_NETO' DataBinding.DataSource = dsViewArticulo Enabled = False @@ -283,12 +314,12 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.TextColor = clWindowText StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 9 + TabOrder = 10 Width = 86 end object ePrecioPorte: TcxDBCurrencyEdit Left = 103 - Top = 301 + Top = 614 DataBinding.DataField = 'PRECIO_PORTE' DataBinding.DataSource = dsViewArticulo Properties.Alignment.Horz = taRightJustify @@ -303,7 +334,7 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 10 + TabOrder = 11 Width = 86 end object cbNoInventariable: TcxDBCheckBox @@ -332,7 +363,7 @@ inherited frViewArticulo: TfrViewArticulo end object ePrecioPVP: TcxDBCurrencyEdit Left = 103 - Top = 328 + Top = 641 DataBinding.DataField = 'PRECIO_PVP' DataBinding.DataSource = dsViewArticulo Properties.Alignment.Horz = taRightJustify @@ -347,17 +378,38 @@ inherited frViewArticulo: TfrViewArticulo StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 11 + TabOrder = 12 Width = 400 end + object eNotas: TcxDBTextEdit + Left = 103 + Top = 136 + DataBinding.DataField = 'NOTAS' + DataBinding.DataSource = dsViewArticulo + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = 14745599 + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Width = 575 + end object dxLayoutControlArticuloGroup_Root: TdxLayoutGroup ShowCaption = False Hidden = True + LayoutDirection = ldHorizontal ShowBorder = False - object dxLayoutControlArticuloGroup7: TdxLayoutGroup + object dxLayoutGrupoIzquierda: TdxLayoutGroup + AutoAligns = [] + Caption = 'izquierda' ShowCaption = False - Hidden = True - LayoutDirection = ldHorizontal ShowBorder = False object dxLayoutControlArticuloGroup1: TdxLayoutGroup AutoAligns = [] @@ -393,61 +445,46 @@ inherited frViewArticulo: TfrViewArticulo Control = cbFamilia ControlOptions.ShowBorder = False end - object dxLayoutControlArticuloItem7: TdxLayoutItem - AutoAligns = [aaVertical] - AlignHorz = ahClient - Caption = ' ' - Control = cbNoInventariable - ControlOptions.ShowBorder = False + object dxLayoutControlArticuloGroup2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlArticuloItem7: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = ' ' + Control = cbNoInventariable + ControlOptions.ShowBorder = False + end + object dxLayoutControlArticuloItem1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = ' ' + Visible = False + Control = eNoComisionable + ControlOptions.ShowBorder = False + end end - object dxLayoutControlArticuloItem1: TdxLayoutItem - AutoAligns = [aaVertical] - AlignHorz = ahClient - Caption = ' ' - Visible = False - Control = eNoComisionable + object dxLayoutControlArticuloItem10: TdxLayoutItem + Caption = 'Notas:' + Control = eNotas ControlOptions.ShowBorder = False end end end end - object dxLayoutControlArticuloGroup2: TdxLayoutGroup + object dxLayoutControlArticuloGroup12: TdxLayoutGroup AutoAligns = [] AlignHorz = ahClient AlignVert = avClient - Caption = 'Imagen' - LayoutDirection = ldHorizontal - object dxLayoutControlArticuloItem6: TdxLayoutItem - AutoAligns = [] - AlignHorz = ahClient - AlignVert = avClient - Control = eImagen + Caption = 'Proveedor para el art'#237'culo' + object dxLayoutControlArticuloItem14: TdxLayoutItem + Control = frViewDatosYSeleccionProveedor1 + ControlOptions.AutoColor = True ControlOptions.ShowBorder = False end - object dxLayoutControlArticuloGroup5: TdxLayoutGroup - AutoAligns = [aaVertical] - AlignHorz = ahRight - ShowCaption = False - Hidden = True - ShowBorder = False - object dxLayoutControlArticuloItem2: TdxLayoutItem - ShowCaption = False - Control = PngSpeedButton2 - ControlOptions.ShowBorder = False - end - object dxLayoutControlArticuloItem5: TdxLayoutItem - ShowCaption = False - Control = PngSpeedButton1 - ControlOptions.ShowBorder = False - end - end end - end - object dxLayoutControlArticuloGroup3: TdxLayoutGroup - Caption = 'New Group' - ShowCaption = False - LayoutDirection = ldHorizontal - ShowBorder = False object dxLayoutControlArticuloGroup11: TdxLayoutGroup AutoAligns = [aaVertical] AlignHorz = ahClient @@ -485,15 +522,38 @@ inherited frViewArticulo: TfrViewArticulo ControlOptions.ShowBorder = False end end - object dxLayoutControlArticuloGroup12: TdxLayoutGroup + end + object dxLayoutGrupoDerecha: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'Imagen' + object dxLayoutControlArticuloGroup5: TdxLayoutGroup AutoAligns = [aaVertical] AlignHorz = ahRight - Caption = 'Proveedor para el art'#237'culo' - object dxLayoutControlArticuloItem14: TdxLayoutItem - Control = frViewDatosYSeleccionProveedor1 - ControlOptions.AutoColor = True + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlArticuloItem2: TdxLayoutItem + AutoAligns = [aaHorizontal] + ShowCaption = False + Control = PngSpeedButton2 ControlOptions.ShowBorder = False end + object dxLayoutControlArticuloItem5: TdxLayoutItem + AutoAligns = [aaHorizontal] + ShowCaption = False + Control = PngSpeedButton1 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlArticuloItem6: TdxLayoutItem + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Control = eImagen + ControlOptions.ShowBorder = False end end end diff --git a/Source/Modulos/Articulos/Views/uViewArticulo.pas b/Source/Modulos/Articulos/Views/uViewArticulo.pas index 2880b16f..9db9d265 100644 --- a/Source/Modulos/Articulos/Views/uViewArticulo.pas +++ b/Source/Modulos/Articulos/Views/uViewArticulo.pas @@ -33,7 +33,7 @@ type eReferencia: TcxDBTextEdit; dxLayoutControlArticuloItem8: TdxLayoutItem; eDescripcion: TcxDBTextEdit; - dxLayoutControlArticuloGroup2: TdxLayoutGroup; + dxLayoutGrupoDerecha: TdxLayoutGroup; dxLayoutControlArticuloItem1: TdxLayoutItem; eNoComisionable: TcxDBCheckBox; dxLayoutControlArticuloGroup4: TdxLayoutGroup; @@ -46,8 +46,6 @@ type PngSpeedButton2: TPngSpeedButton; dxLayoutControlArticuloItem5: TdxLayoutItem; PngSpeedButton1: TPngSpeedButton; - dxLayoutControlArticuloGroup3: TdxLayoutGroup; - dxLayoutControlArticuloGroup7: TdxLayoutGroup; eImagen: TcxImage; dxLayoutControlArticuloItem6: TdxLayoutItem; dxLayoutControlArticuloGroup5: TdxLayoutGroup; @@ -72,6 +70,10 @@ type cbNoInventariable: TcxDBCheckBox; dxLayoutControlArticuloItem9: TdxLayoutItem; ePrecioPVP: TcxDBCurrencyEdit; + dxLayoutGrupoIzquierda: TdxLayoutGroup; + dxLayoutControlArticuloItem10: TdxLayoutItem; + eNotas: TcxDBTextEdit; + dxLayoutControlArticuloGroup2: TdxLayoutGroup; procedure actEliminarExecute(Sender: TObject); procedure actAnadirExecute(Sender: TObject); procedure cbFamiliaPropertiesInitPopup(Sender: TObject); diff --git a/Source/Modulos/Articulos/Views/uViewArticulos.dfm b/Source/Modulos/Articulos/Views/uViewArticulos.dfm index 282ec4c1..96fec4fb 100644 --- a/Source/Modulos/Articulos/Views/uViewArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uViewArticulos.dfm @@ -16,6 +16,7 @@ inherited frViewArticulos: TfrViewArticulos end> OptionsBehavior.PullFocusing = True OptionsCustomize.ColumnHidingOnGrouping = False + OptionsSelection.MultiSelect = True OptionsView.GroupFooters = gfAlwaysVisible object cxGridViewINVENTARIABLE: TcxGridDBColumn Caption = #191'Inventariable?' @@ -160,18 +161,32 @@ inherited frViewArticulos: TfrViewArticulos StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 250 + Width = 250 end inherited edtFechaIniFiltro: TcxDateEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 250 + Width = 250 end inherited edtFechaFinFiltro: TcxDateEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 250 + Width = 250 + end + inherited txtFiltroTodo2: TcxTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 250 + Width = 250 end end end diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index 32ecb6bb..605dfde8 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -1042,7 +1042,7 @@ begin AFactura.Cancel; //Siempre modificaremos el seleccionado tanto si es una lista de facturas a eliminar como si es la propia lista del editor. - if AFactura.VERIFACTU = 0 then + if AFactura.VERIFACTU <> 1 then begin if not AFactura.DataTable.Editing then AFactura.DataTable.Edit; diff --git a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm index 4224e90d..05efa234 100644 --- a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm @@ -334,6 +334,10 @@ inherited DataModuleFacturasCliente: TDataModuleFacturasCliente item Name = 'VERIFACTU' DataType = datSmallInt + end + item + Name = 'VERIFACTU_NOTES' + DataType = datMemo end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas index 76a19201..3afbdab7 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas @@ -9,9 +9,9 @@ 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_ListaAnosFacturas = '{B69B55BD-5E55-4B54-A51B-42A78E3A7CE9}'; - RID_FacturasCliente = '{138DC6B2-AE65-442B-A817-DAF8B232F651}'; - RID_FacturasCliente_Detalles = '{D46B6B5D-729B-483E-BE25-99E1C9A4479B}'; + RID_ListaAnosFacturas = '{71FE2674-173D-4709-B902-4C7DFDF34522}'; + RID_FacturasCliente = '{B6C04111-8712-48BF-983D-3DA435302F3B}'; + RID_FacturasCliente_Detalles = '{05038E0E-9ECA-47C3-95A8-9E6BD9762D18}'; { Data table names } nme_ListaAnosFacturas = 'ListaAnosFacturas'; @@ -78,6 +78,7 @@ const fld_FacturasClienteTIPO_FACTURA = 'TIPO_FACTURA'; fld_FacturasClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; fld_FacturasClienteVERIFACTU = 'VERIFACTU'; + fld_FacturasClienteVERIFACTU_NOTES = 'VERIFACTU_NOTES'; { FacturasCliente field indexes } idx_FacturasClienteID = 0; @@ -133,6 +134,7 @@ const idx_FacturasClienteTIPO_FACTURA = 50; idx_FacturasClienteLISTA_NOMBRES = 51; idx_FacturasClienteVERIFACTU = 52; + idx_FacturasClienteVERIFACTU_NOTES = 53; { FacturasCliente_Detalles fields } fld_FacturasCliente_DetallesID = 'ID'; @@ -169,7 +171,7 @@ const type { IListaAnosFacturas } IListaAnosFacturas = interface(IDAStronglyTypedDataTable) - ['{0A78F7B9-733E-4E29-A0AD-C80889316AF8}'] + ['{3C4BE188-2809-4428-8CCB-6EAAEABFDDB1}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -204,7 +206,7 @@ type { IFacturasCliente } IFacturasCliente = interface(IDAStronglyTypedDataTable) - ['{6D58B4D9-9AA3-4552-99A9-27A1BB728D85}'] + ['{0554ED96-C35C-4516-8681-82A0B77D9339}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -417,6 +419,9 @@ type procedure SetVERIFACTUValue(const aValue: SmallInt); function GetVERIFACTUIsNull: Boolean; procedure SetVERIFACTUIsNull(const aValue: Boolean); + function GetVERIFACTU_NOTESValue: IROStrings; + function GetVERIFACTU_NOTESIsNull: Boolean; + procedure SetVERIFACTU_NOTESIsNull(const aValue: Boolean); { Properties } @@ -526,13 +531,17 @@ type property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property VERIFACTU: SmallInt read GetVERIFACTUValue write SetVERIFACTUValue; property VERIFACTUIsNull: Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; + property VERIFACTU_NOTES: IROStrings read GetVERIFACTU_NOTESValue; + property VERIFACTU_NOTESIsNull: Boolean read GetVERIFACTU_NOTESIsNull write SetVERIFACTU_NOTESIsNull; end; { TFacturasClienteDataTableRules } TFacturasClienteDataTableRules = class(TIntfObjectDADataTableRules, IFacturasCliente) private f_OBSERVACIONES: IROStrings; + f_VERIFACTU_NOTES: IROStrings; procedure OBSERVACIONES_OnChange(Sender: TObject); + procedure VERIFACTU_NOTES_OnChange(Sender: TObject); protected { Property getters and setters } function GetIDValue: Integer; virtual; @@ -746,6 +755,9 @@ type procedure SetVERIFACTUValue(const aValue: SmallInt); virtual; function GetVERIFACTUIsNull: Boolean; virtual; procedure SetVERIFACTUIsNull(const aValue: Boolean); virtual; + function GetVERIFACTU_NOTESValue: IROStrings; virtual; + function GetVERIFACTU_NOTESIsNull: Boolean; virtual; + procedure SetVERIFACTU_NOTESIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -854,6 +866,8 @@ type property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property VERIFACTU: SmallInt read GetVERIFACTUValue write SetVERIFACTUValue; property VERIFACTUIsNull: Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; + property VERIFACTU_NOTES: IROStrings read GetVERIFACTU_NOTESValue; + property VERIFACTU_NOTESIsNull: Boolean read GetVERIFACTU_NOTESIsNull write SetVERIFACTU_NOTESIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -863,7 +877,7 @@ type { IFacturasCliente_Detalles } IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{C9F165D5-5856-41F6-A5BF-9139520624DC}'] + ['{2F96F605-C1B7-4D77-8688-9EEAF8BB15D0}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1099,6 +1113,10 @@ begin StrList := TStringList.Create; StrList.OnChange := OBSERVACIONES_OnChange; f_OBSERVACIONES := NewROStrings(StrList,True); + + StrList := TStringList.Create; + StrList.OnChange := VERIFACTU_NOTES_OnChange; + f_VERIFACTU_NOTES := NewROStrings(StrList,True); end; destructor TFacturasClienteDataTableRules.Destroy; @@ -1111,6 +1129,11 @@ begin if DataTable.Editing then DataTable.Fields[idx_FacturasClienteOBSERVACIONES].AsVariant := TStringList(Sender).Text; end; +procedure TFacturasClienteDataTableRules.VERIFACTU_NOTES_OnChange(Sender: TObject); +begin + if DataTable.Editing then DataTable.Fields[idx_FacturasClienteVERIFACTU_NOTES].AsVariant := TStringList(Sender).Text; +end; + function TFacturasClienteDataTableRules.GetIDValue: Integer; begin result := DataTable.Fields[idx_FacturasClienteID].AsInteger; @@ -2220,6 +2243,23 @@ begin DataTable.Fields[idx_FacturasClienteVERIFACTU].AsVariant := Null; end; +function TFacturasClienteDataTableRules.GetVERIFACTU_NOTESValue: IROStrings; +begin + result := f_VERIFACTU_NOTES; + result.Text := DataTable.Fields[idx_FacturasClienteVERIFACTU_NOTES].AsString; +end; + +function TFacturasClienteDataTableRules.GetVERIFACTU_NOTESIsNull: boolean; +begin + result := DataTable.Fields[idx_FacturasClienteVERIFACTU_NOTES].IsNull; +end; + +procedure TFacturasClienteDataTableRules.SetVERIFACTU_NOTESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_FacturasClienteVERIFACTU_NOTES].AsVariant := Null; +end; + { TFacturasCliente_DetallesDataTableRules } constructor TFacturasCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas index 0d2a8eef..8ca7c048 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas @@ -9,14 +9,14 @@ 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_ListaAnosFacturasDelta = '{8684B20C-9A58-4343-ACBF-6E788A6D9342}'; - RID_FacturasClienteDelta = '{F6D07436-A868-46A4-AF86-357F3FB7A074}'; - RID_FacturasCliente_DetallesDelta = '{904B050A-78E2-4159-AD88-28EB0F6F6F69}'; + RID_ListaAnosFacturasDelta = '{753DC6A9-0D33-44D6-AC73-56B24BD7B037}'; + RID_FacturasClienteDelta = '{C3660EB7-FB02-49EF-8909-756D1320539A}'; + RID_FacturasCliente_DetallesDelta = '{339CC635-252E-414D-AFD0-10BB5CBECBB7}'; type { IListaAnosFacturasDelta } IListaAnosFacturasDelta = interface(IListaAnosFacturas) - ['{8684B20C-9A58-4343-ACBF-6E788A6D9342}'] + ['{753DC6A9-0D33-44D6-AC73-56B24BD7B037}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +50,7 @@ type { IFacturasClienteDelta } IFacturasClienteDelta = interface(IFacturasCliente) - ['{F6D07436-A868-46A4-AF86-357F3FB7A074}'] + ['{C3660EB7-FB02-49EF-8909-756D1320539A}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -105,6 +105,7 @@ type function GetOldTIPO_FACTURAValue : String; function GetOldLISTA_NOMBRESValue : String; function GetOldVERIFACTUValue : SmallInt; + function GetOldVERIFACTU_NOTESValue : IROStrings; { Properties } property OldID : Integer read GetOldIDValue; @@ -160,13 +161,16 @@ type property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue; property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; property OldVERIFACTU : SmallInt read GetOldVERIFACTUValue; + property OldVERIFACTU_NOTES : IROStrings read GetOldVERIFACTU_NOTESValue; end; { TFacturasClienteBusinessProcessorRules } TFacturasClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IFacturasCliente, IFacturasClienteDelta) private f_OBSERVACIONES: IROStrings; + f_VERIFACTU_NOTES: IROStrings; procedure OBSERVACIONES_OnChange(Sender: TObject); + procedure VERIFACTU_NOTES_OnChange(Sender: TObject); protected { Property getters and setters } function GetIDValue: Integer; virtual; @@ -486,6 +490,11 @@ type function GetOldVERIFACTUIsNull: Boolean; virtual; procedure SetVERIFACTUValue(const aValue: SmallInt); virtual; procedure SetVERIFACTUIsNull(const aValue: Boolean); virtual; + function GetVERIFACTU_NOTESValue: IROStrings; virtual; + function GetVERIFACTU_NOTESIsNull: Boolean; virtual; + function GetOldVERIFACTU_NOTESValue: IROStrings; virtual; + function GetOldVERIFACTU_NOTESIsNull: Boolean; virtual; + procedure SetVERIFACTU_NOTESIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -700,6 +709,10 @@ type property VERIFACTUIsNull : Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; property OldVERIFACTU : SmallInt read GetOldVERIFACTUValue; property OldVERIFACTUIsNull : Boolean read GetOldVERIFACTUIsNull; + property VERIFACTU_NOTES : IROStrings read GetVERIFACTU_NOTESValue; + property VERIFACTU_NOTESIsNull : Boolean read GetVERIFACTU_NOTESIsNull write SetVERIFACTU_NOTESIsNull; + property OldVERIFACTU_NOTES : IROStrings read GetOldVERIFACTU_NOTESValue; + property OldVERIFACTU_NOTESIsNull : Boolean read GetOldVERIFACTU_NOTESIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -709,7 +722,7 @@ type { IFacturasCliente_DetallesDelta } IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) - ['{904B050A-78E2-4159-AD88-28EB0F6F6F69}'] + ['{339CC635-252E-414D-AFD0-10BB5CBECBB7}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_FACTURAValue : Integer; @@ -955,6 +968,10 @@ begin StrList := TStringList.Create; StrList.OnChange := OBSERVACIONES_OnChange; f_OBSERVACIONES := NewROStrings(StrList,True); + + StrList := TStringList.Create; + StrList.OnChange := VERIFACTU_NOTES_OnChange; + f_VERIFACTU_NOTES := NewROStrings(StrList,True); end; destructor TFacturasClienteBusinessProcessorRules.Destroy; @@ -967,6 +984,11 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteOBSERVACIONES] := TStringList(Sender).Text; end; +procedure TFacturasClienteBusinessProcessorRules.VERIFACTU_NOTES_OnChange(Sender: TObject); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU_NOTES] := TStringList(Sender).Text; +end; + function TFacturasClienteBusinessProcessorRules.GetIDValue: Integer; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteID]; @@ -2607,6 +2629,34 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU] := Null; end; +function TFacturasClienteBusinessProcessorRules.GetVERIFACTU_NOTESValue: IROStrings; +begin + result := f_VERIFACTU_NOTES; + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU_NOTES]; +end; + +function TFacturasClienteBusinessProcessorRules.GetVERIFACTU_NOTESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU_NOTES]); +end; + +function TFacturasClienteBusinessProcessorRules.GetOldVERIFACTU_NOTESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteVERIFACTU_NOTES]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldVERIFACTU_NOTESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteVERIFACTU_NOTES]); +end; + +procedure TFacturasClienteBusinessProcessorRules.SetVERIFACTU_NOTESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU_NOTES] := Null; +end; + { TFacturasCliente_DetallesBusinessProcessorRules } constructor TFacturasCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Facturas de cliente/Plugin/uPluginFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Plugin/uPluginFacturasCliente.dfm index 23dc28a3..a7281112 100644 --- a/Source/Modulos/Facturas de cliente/Plugin/uPluginFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Plugin/uPluginFacturasCliente.dfm @@ -46,7 +46,7 @@ object PluginFacturasCliente: TPluginFacturasCliente Top = 72 object actFacturasCliente: TAction Category = 'Ventas' - Caption = 'Facturas de cliente' + Caption = 'Facturas proforma de cliente' ImageIndex = 0 OnExecute = actFacturasClienteExecute end diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm index 7decb043..2201c79d 100644 --- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm +++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm @@ -259,6 +259,10 @@ object srvFacturasCliente: TsrvFacturasCliente item DatasetField = 'VERIFACTU' TableField = 'VERIFACTU' + end + item + DatasetField = 'VERIFACTU_NOTES' + TableField = 'VERIFACTU_NOTES' end> end> Name = 'FacturasCliente' @@ -537,6 +541,10 @@ object srvFacturasCliente: TsrvFacturasCliente item Name = 'VERIFACTU' DataType = datSmallInt + end + item + Name = 'VERIFACTU_NOTES' + DataType = datMemo end> end item diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorElegirSituacion.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorElegirSituacion.dfm index 37c29715..da1f273e 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorElegirSituacion.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorElegirSituacion.dfm @@ -4,7 +4,7 @@ object fEditorElegirSituacion: TfEditorElegirSituacion BorderStyle = bsDialog Caption = 'Elegir situaci'#243'n' ClientHeight = 140 - ClientWidth = 392 + ClientWidth = 403 Color = clWindow Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -33,7 +33,7 @@ object fEditorElegirSituacion: TfEditorElegirSituacion object PnlComentario: TPanel Left = 0 Top = 0 - Width = 392 + Width = 403 Height = 45 Align = alTop Alignment = taLeftJustify @@ -42,29 +42,30 @@ object fEditorElegirSituacion: TfEditorElegirSituacion ParentBackground = False TabOrder = 0 VerticalAlignment = taAlignTop + ExplicitWidth = 392 object lbComentario: TLabel AlignWithMargins = True Left = 6 Top = 4 - Width = 382 + Width = 393 Height = 40 Margins.Left = 5 Align = alClient Caption = - 'Seleccione la situaci'#243'n que quiere para la/s factura/s seleccion' + - 'ada/s:' + 'Seleccione la situaci'#243'n que quiere para la/s factura/s proforma/' + + 's seleccionada/s:' WordWrap = True - ExplicitHeight = 39 + ExplicitHeight = 21 end end object Panel1: TPanel Left = 0 Top = 99 - Width = 392 + Width = 403 Height = 41 Align = alBottom TabOrder = 1 - ExplicitTop = 138 + ExplicitWidth = 392 object bAceptar: TButton Left = 188 Top = 8 diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.dfm index 7d02e26d..de240b12 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.dfm @@ -1,18 +1,18 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente Left = 454 Top = 208 - Caption = 'Nueva factura de cliente' + Caption = 'Nueva factura proforma de cliente' ClientHeight = 662 ClientWidth = 860 Position = poScreenCenter OnClose = CustomEditorClose - ExplicitWidth = 868 - ExplicitHeight = 696 + ExplicitWidth = 876 + ExplicitHeight = 700 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader Width = 860 - Caption = 'Nueva factura de cliente' + Caption = 'Nueva factura proforma de cliente' ExplicitWidth = 860 inherited Image1: TImage Left = 833 @@ -48,7 +48,7 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente Width = 860 ExplicitWidth = 860 inherited tbxMain: TTBXToolbar - ExplicitWidth = 488 + ExplicitWidth = 518 inherited TBXItem2: TTBXItem Visible = False end @@ -86,20 +86,20 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente end inherited pgPaginas: TPageControl Width = 854 - Height = 368 + Height = 366 OnChanging = pgPaginasChanging ExplicitWidth = 854 - ExplicitHeight = 368 + ExplicitHeight = 366 inherited pagGeneral: TTabSheet ExplicitLeft = 4 ExplicitTop = 24 ExplicitWidth = 846 - ExplicitHeight = 340 + ExplicitHeight = 338 inline frViewFacturaCliente1: TfrViewFacturaCliente Left = 0 Top = 0 Width = 846 - Height = 340 + Height = 338 Align = alClient Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -110,12 +110,12 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente TabOrder = 0 ReadOnly = False ExplicitWidth = 846 - ExplicitHeight = 340 + ExplicitHeight = 338 inherited dxLayoutControl1: TdxLayoutControl Width = 846 - Height = 340 + Height = 338 ExplicitWidth = 846 - ExplicitHeight = 340 + ExplicitHeight = 338 inherited eReferencia: TcxDBTextEdit ExplicitWidth = 159 Width = 159 @@ -218,7 +218,7 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente Left = 0 Top = 0 Width = 846 - Height = 340 + Height = 338 Align = alClient BiDiMode = bdLeftToRight Font.Charset = DEFAULT_CHARSET @@ -231,105 +231,120 @@ inherited fEditorFacturaCliente: TfEditorFacturaCliente TabOrder = 0 ReadOnly = False ExplicitWidth = 846 - ExplicitHeight = 340 + ExplicitHeight = 338 inherited ToolBar1: TToolBar Width = 846 Height = 24 + ButtonWidth = 123 ExplicitWidth = 846 ExplicitHeight = 24 + inherited ToolButton1: TToolButton + ExplicitWidth = 119 + end + inherited ToolButton2: TToolButton + Left = 119 + ExplicitLeft = 119 + ExplicitWidth = 127 + end + inherited ToolButton3: TToolButton + Left = 246 + ExplicitLeft = 246 + ExplicitWidth = 58 + end inherited ToolButton4: TToolButton + Left = 304 Wrap = False + ExplicitLeft = 304 + ExplicitWidth = 57 end inherited ToolButton14: TToolButton - Left = 334 + Left = 361 Top = 0 - ExplicitLeft = 334 + ExplicitLeft = 361 ExplicitTop = 0 end inherited FontName: TJvFontComboBox - Left = 368 + Left = 395 Top = 0 - ExplicitLeft = 368 + ExplicitLeft = 395 ExplicitTop = 0 end - inherited FontSize: TEdit - Left = 513 + inherited ToolButton13: TToolButton [6] + Left = 540 Top = 0 - Width = 57 - ExplicitLeft = 513 - ExplicitTop = 0 - ExplicitWidth = 57 - end - inherited UpDown1: TUpDown - Left = 586 - Top = 0 - ExplicitLeft = 586 + ExplicitLeft = 540 ExplicitTop = 0 end - inherited ToolButton13: TToolButton - Left = 603 + inherited ToolButton6: TToolButton [7] + Left = 548 Top = 0 - ExplicitLeft = 603 + ExplicitLeft = 548 ExplicitTop = 0 end - inherited ToolButton6: TToolButton - Left = 611 + inherited ToolButton7: TToolButton [8] + Left = 582 Top = 0 - ExplicitLeft = 611 + ExplicitLeft = 582 ExplicitTop = 0 end - inherited ToolButton7: TToolButton - Left = 645 + inherited ToolButton8: TToolButton [9] + Left = 616 Top = 0 - ExplicitLeft = 645 + ExplicitLeft = 616 ExplicitTop = 0 end - inherited ToolButton8: TToolButton - Left = 679 + inherited ToolButton12: TToolButton [10] + Left = 650 Top = 0 - ExplicitLeft = 679 + ExplicitLeft = 650 ExplicitTop = 0 end - inherited ToolButton12: TToolButton - Left = 713 + inherited ToolButton9: TToolButton [11] + Left = 658 Top = 0 - ExplicitLeft = 713 + ExplicitLeft = 658 ExplicitTop = 0 end - inherited ToolButton9: TToolButton - Left = 721 + inherited ToolButton10: TToolButton [12] + Left = 692 Top = 0 - ExplicitLeft = 721 + ExplicitLeft = 692 ExplicitTop = 0 end - inherited ToolButton10: TToolButton - Left = 755 + inherited ToolButton11: TToolButton [13] + Left = 726 Top = 0 - ExplicitLeft = 755 + ExplicitLeft = 726 ExplicitTop = 0 end - inherited ToolButton11: TToolButton - Left = 789 + inherited FontSize: TEdit [14] + Left = 760 Top = 0 - ExplicitLeft = 789 + Width = 73 + ExplicitLeft = 760 + ExplicitTop = 0 + ExplicitWidth = 73 + end + inherited UpDown1: TUpDown [15] + Left = 833 + Top = 0 + ExplicitLeft = 833 ExplicitTop = 0 end end inherited cxGrid: TcxGrid Top = 50 Width = 846 - Height = 290 - ExplicitTop = 50 + Height = 288 ExplicitWidth = 846 - ExplicitHeight = 290 + ExplicitHeight = 288 end inherited TBXDock1: TTBXDock Top = 24 Width = 846 - ExplicitTop = 24 ExplicitWidth = 846 inherited TBXToolbar1: TTBXToolbar - ExplicitWidth = 548 + ExplicitWidth = 597 end end end diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.pas index bda79f4b..2b8d02a0 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturaCliente.pas @@ -397,18 +397,18 @@ begin begin if Factura.EsNuevo then if Factura.TIPO = CTE_TIPO_ABONO then - FTitulo := 'Nuevo abono a cliente' + FTitulo := 'Nuevo abono proforma a cliente' else if Factura.TIPO = CTE_TIPO_PROFORMA then FTitulo := 'Nueva factura proforma de cliente' else - FTitulo := 'Nueva factura de cliente' + FTitulo := 'Nueva factura proforma de cliente' else if Factura.TIPO = CTE_TIPO_ABONO then - FTitulo := 'Abono a cliente' + ' - ' + FFactura.Cliente.Nombre + FTitulo := 'Abono a proforma cliente' + ' - ' + FFactura.Cliente.Nombre else if Factura.TIPO = CTE_TIPO_PROFORMA then FTitulo := 'Factura proforma de cliente' + ' - ' + FFactura.Cliente.Nombre else - FTitulo := 'Factura de cliente' + ' - ' + FFactura.Cliente.Nombre + FTitulo := 'Factura proforma de cliente' + ' - ' + FFactura.Cliente.Nombre end; inherited PonerTitulos(FTitulo); diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm index 98ea0fee..2df12f0c 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm @@ -1,5 +1,5 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente - Caption = 'Lista de facturas de cliente' + Caption = 'Lista de facturas proforma de cliente' ClientHeight = 666 ClientWidth = 640 ExplicitWidth = 656 @@ -8,7 +8,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader Width = 640 - Caption = 'Lista de facturas de cliente' + Caption = 'Lista de facturas proforma de cliente' ExplicitWidth = 640 inherited Image1: TImage Left = 613 @@ -46,11 +46,11 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Images = SmallImages object TBXItem39: TTBXItem Action = actNuevaFactura - Caption = 'Nueva factura...' + Caption = 'Nueva factura proforma' end object TBXItem38: TTBXItem Action = actNuevoAbono - Caption = 'Nuevo abono...' + Caption = 'Nuevo abono proforma' end object TBXItem43: TTBXItem Action = actNuevaProforma @@ -300,13 +300,13 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end object actNuevaFactura: TAction Category = 'Archivo' - Caption = 'Factura' + Caption = 'Factura proforma' ImageIndex = 23 OnExecute = actNuevaFacturaExecute end object actNuevoAbono: TAction Category = 'Archivo' - Caption = 'Abono' + Caption = 'Abono proforma' ImageIndex = 24 OnExecute = actNuevoAbonoExecute end @@ -332,7 +332,9 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente object actNuevaProforma: TAction Category = 'Archivo' Caption = 'Proforma' + Enabled = False ImageIndex = 22 + Visible = False OnExecute = actNuevaProformaExecute end object actConvertirEnFactura: TAction @@ -2000,7 +2002,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end object JsNuevaFacturaDialog: TJSDialog Content.Strings = ( - #191'C'#243'mo desea dar de alta la factura?') + #191'C'#243'mo desea dar de alta la factura proforma?') DialogOptions = [doCommandLinks, doModal] Glyph.Data = { 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 @@ -2031,7 +2033,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} - Instruction.Text = 'Nueva factura de cliente' + Instruction.Text = 'Nueva factura proforma de cliente' Instruction.Glyph.Data = { 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 00001C0806000000720DDF940000000970485973000017120000171201679FD2 @@ -2064,7 +2066,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Instruction.Icon = tdiCustom CustomButtons = < item - Caption = 'Factura nueva vac'#237'a.' + Caption = 'Factura proforma nueva vac'#237'a.' Value = 100 Default = True end @@ -2074,7 +2076,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Info.Strings = ( 'Puede utilizar uno o m'#225's albaranes existentes para dar de alta l' + - 'a factura nueva.') + 'a factura proforma nueva.') end> ButtonBar.Buttons = [cbCancel] MainIcon = tdiCustom @@ -3309,7 +3311,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Instruction.Icon = tdiCustom CustomButtons = < item - Caption = 'Abono nuevo vac'#237'o.' + Caption = 'Abono proforma nuevo vac'#237'o.' Value = 100 Default = True end @@ -3318,8 +3320,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Value = 200 Info.Strings = ( - 'Puede utilizar una factura de cliente para dar de alta el nuevo ' + - 'abono.') + 'Puede utilizar una factura proforma de cliente para dar de alta ' + + 'el nuevo abono proforma.') end> ButtonBar.Buttons = [cbCancel] MainIcon = tdiCustom diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas index ddf4907d..222c314c 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas @@ -70,6 +70,7 @@ type private FFacturas: IBizFacturaCliente; FController : IFacturasClienteController; + protected function GetFacturas: IBizFacturaCliente; procedure SetFacturas(const Value: IBizFacturaCliente); @@ -307,14 +308,14 @@ begin if AllItems then begin - if (Application.MessageBox('¿Desea mandar a verifactu los borradores seleccionados?, ya no podrá modificarlos', 'Atención', MB_YESNO) = IDYES) then + if (Application.MessageBox('¿Desea mandar a VERIFACTU los borradores seleccionados, para que se conviertan en FACTURAS DEFINITIVAS EN LA AEAT?, ya no podrá modificarlos', 'Atención', MB_YESNO) = IDYES) then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords); AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente; end end else begin - if (Application.MessageBox('¿Desea mandar a verifactu el borrador seleccionado?, ya no podrá modificarlo', 'Atención', MB_YESNO) = IDYES) then + if (Application.MessageBox('¿Desea mandar a VERIFACTU el borrador seleccionado, para que se convierta en FACTURA DEFINITIVA EN LA AEAT?, ya no podrá modificarlo', 'Atención', MB_YESNO) = IDYES) then AFacturas := Facturas; end; @@ -357,15 +358,13 @@ begin inherited; (Sender as TAction).Enabled := False; - -{Quitar al activar verifactu + if HayDatos and Assigned(ViewGrid) then (Sender as TAction).Enabled := ViewGrid.EsSeleccionCeldaDatos and (ViewGrid.NumSeleccionados > 0) - and (FFacturas.VERIFACTU < 1) + and (FFacturas.VERIFACTU <> 1) else (Sender as TAction).Enabled := False; -} end; procedure TfEditorFacturasCliente.actNuevaFacturaExecute(Sender: TObject); @@ -672,7 +671,7 @@ procedure TfEditorFacturasCliente.PonerTitulos(const ATitulo: string); var FTitulo : String; begin - FTitulo := 'Lista de facturas de cliente - ' + AppFactuGES.EmpresaActiva.NOMBRE; + FTitulo := 'Lista de facturas proforma de cliente - ' + AppFactuGES.EmpresaActiva.NOMBRE; inherited PonerTitulos(FTitulo); end; diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm index daf577e1..298c3e13 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm @@ -174,21 +174,33 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente object cxGridViewVERIFACTU: TcxGridDBColumn DataBinding.FieldName = 'VERIFACTU' PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Alignment.Horz = taCenter Properties.Images = PngImageList Properties.Items = < item - Description = 'Verifactu' + Value = 0 + end + item + Description = 'VERIFACTU' ImageIndex = 0 Value = 1 end item - Value = 0 + Description = 'INCIDENCIA' + ImageIndex = 4 + Value = 2 end> + OnGetCellHint = cxGridViewVERIFACTUGetCellHint FooterAlignmentHorz = taCenter GroupSummaryAlignment = taCenter HeaderAlignmentHorz = taCenter HeaderGlyphAlignmentHorz = taCenter end + object cxGridViewVERIFACTU_NOTES: TcxGridDBColumn + DataBinding.FieldName = 'VERIFACTU_NOTES' + Visible = False + VisibleForCustomization = False + end end inherited cxGridLevel: TcxGridLevel Caption = 'Todas' @@ -241,12 +253,14 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente Width = 273 end inherited txtFiltroTodo2: TcxTextEdit - Left = 559 + Left = 541 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 559 + ExplicitLeft = 541 + ExplicitWidth = 250 + Width = 250 end end inherited TBXAlignmentPanel1: TTBXAlignmentPanel @@ -429,6 +443,34 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente 00004B6D80F047EC10D30000000049454E44AE426082} Name = 'PngImage1' Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000027F4944415478DA + 95926D48535118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440 + A4E84D828C304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A6450 + 83CC55787129CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3 + C2A1608EF5A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBE + FF3CBC5830C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78 + 091139AC66F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5D + BD8D6985E37BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB + 7E5FE2A15A18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BF + D37823B3D879784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E + 1509132316E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159A + C0502785D8984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611 + E4038EF34256FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF + 288E87A8D597389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5 + D632EEDC1F00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0 + 406C62D86EEFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E68 + 6872C1CE1C2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075 + 184D43A0FF400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D0346 + 7FFC8106E2A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A8950462 + 25E8670B8CD01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE54 + 82788F788FF9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51 + CF0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow end> Bitmap = {} end @@ -713,6 +755,34 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente 064200A70120096201BA0100A6C62916A56F74520000000049454E44AE426082} Name = 'PngImage3' Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000027F4944415478DA + 95926D48535118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440 + A4E84D828C304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A6450 + 83CC55787129CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3 + C2A1608EF5A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBE + FF3CBC5830C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78 + 091139AC66F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5D + BD8D6985E37BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB + 7E5FE2A15A18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BF + D37823B3D879784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E + 1509132316E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159A + C0502785D8984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611 + E4038EF34256FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF + 288E87A8D597389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5 + D632EEDC1F00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0 + 406C62D86EEFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E68 + 6872C1CE1C2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075 + 184D43A0FF400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D0346 + 7FFC8106E2A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A8950462 + 25E8670B8CD01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE54 + 82788F788FF9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51 + CF0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow end> Left = 56 Top = 48 diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas index 96163f1c..0128bdfd 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas @@ -72,6 +72,7 @@ type TBXItem4: TTBXItem; cxGridProforma: TcxGridLevel; cxGridViewVERIFACTU: TcxGridDBColumn; + cxGridViewVERIFACTU_NOTES: TcxGridDBColumn; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); @@ -82,6 +83,10 @@ type procedure actClienteUpdate(Sender: TObject); procedure actTiendaExecute(Sender: TObject); procedure actTiendaUpdate(Sender: TObject); + procedure cxGridViewVERIFACTUGetCellHint(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; ACellViewInfo: TcxGridTableDataCellViewInfo; + const AMousePos: TPoint; var AHintText: TCaption; + var AIsHintMultiLine: Boolean; var AHintTextRect: TRect); private //Filtros relativos a la vista @@ -287,6 +292,21 @@ begin end; end; +procedure TfrViewFacturasCliente.cxGridViewVERIFACTUGetCellHint( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + ACellViewInfo: TcxGridTableDataCellViewInfo; const AMousePos: TPoint; + var AHintText: TCaption; var AIsHintMultiLine: Boolean; + var AHintTextRect: TRect); +begin + inherited; + if (ARecord.DisplayTexts[Sender.Index] = 'INCIDENCIA') then + begin + AIsHintMultiLine := True; + if not VarIsNull(ARecord.Values[cxGridViewVERIFACTU_NOTES.Index]) then + AHintText := ARecord.Values[cxGridViewVERIFACTU_NOTES.Index]; + end; +end; + function TfrViewFacturasCliente.GetFacturas: IBizFacturaCliente; begin Result := FFacturas; diff --git a/Source/Modulos/Facturas de proveedor/Views/uViewFacturaProveedor.dfm b/Source/Modulos/Facturas de proveedor/Views/uViewFacturaProveedor.dfm index 5723ca5b..e5d9c80d 100644 --- a/Source/Modulos/Facturas de proveedor/Views/uViewFacturaProveedor.dfm +++ b/Source/Modulos/Facturas de proveedor/Views/uViewFacturaProveedor.dfm @@ -1,6 +1,6 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor - Width = 451 - Height = 304 + Width = 1227 + Height = 559 Align = alClient OnCreate = CustomViewCreate OnDestroy = CustomViewDestroy @@ -9,17 +9,19 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor object dxLayoutControl1: TdxLayoutControl Left = 0 Top = 0 - Width = 451 - Height = 304 + Width = 1227 + Height = 559 Align = alClient ParentBackground = True TabOrder = 0 TabStop = False AutoContentSizes = [acsWidth, acsHeight] LookAndFeel = dxLayoutOfficeLookAndFeel1 + ExplicitWidth = 451 + ExplicitHeight = 304 DesignSize = ( - 451 - 304) + 1227 + 559) object eReferencia: TcxDBTextEdit Left = 124 Top = 30 @@ -95,7 +97,7 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor Width = 169 end object bFormasPago: TButton - Left = 150 + Left = 733 Top = 135 Width = 132 Height = 23 @@ -171,10 +173,11 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor Width = 158 end inline frViewProveedorFactura1: TfrViewProveedorFactura - Left = 310 + Left = 893 Top = 30 Width = 312 - Height = 260 + Height = 265 + Align = alClient Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -183,12 +186,14 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor ParentFont = False TabOrder = 7 ReadOnly = False - ExplicitLeft = 310 + ExplicitLeft = 893 ExplicitTop = 30 ExplicitWidth = 312 - ExplicitHeight = 260 + ExplicitHeight = 265 inherited dxLayoutControl1: TdxLayoutControl Width = 312 + Height = 265 + Align = alClient ExplicitWidth = 312 inherited Bevel1: TBevel Width = 242 @@ -230,7 +235,7 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor end inline frViewObservaciones1: TfrViewObservaciones Left = 22 - Top = 320 + Top = 325 Width = 521 Height = 228 Font.Charset = DEFAULT_CHARSET @@ -242,7 +247,7 @@ inherited frViewFacturaProveedor: TfrViewFacturaProveedor TabOrder = 8 ReadOnly = False ExplicitLeft = 22 - ExplicitTop = 320 + ExplicitTop = 325 ExplicitHeight = 228 inherited memObservaciones: TcxDBMemo DataBinding.DataField = 'OBSERVACIONES' diff --git a/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm b/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm index 51a30d1b..1b52aae1 100644 --- a/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm +++ b/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm @@ -33,7 +33,7 @@ object PluginFamilias: TPluginFamilias Left = 40 Top = 16 object Ventas1: TMenuItem - Caption = 'Datos' + Caption = 'Log'#237'stica' object Familias1: TMenuItem Tag = 900 Action = actFamilias diff --git a/Source/Modulos/Historico de movimientos/Views/uViewHistoricoMovimientos.dfm b/Source/Modulos/Historico de movimientos/Views/uViewHistoricoMovimientos.dfm index ea190e64..98bb6bdf 100644 --- a/Source/Modulos/Historico de movimientos/Views/uViewHistoricoMovimientos.dfm +++ b/Source/Modulos/Historico de movimientos/Views/uViewHistoricoMovimientos.dfm @@ -58,6 +58,7 @@ inherited frViewHistoricoMovimientos: TfrViewHistoricoMovimientos DataBinding.FieldName = 'REFERENCIA_PROV' end object cxGridViewDESCRIPCION: TcxGridDBColumn + Caption = 'Descripci'#243'n' DataBinding.FieldName = 'DESCRIPCION' end object cxGridViewCANTIDAD: TcxGridDBColumn @@ -68,6 +69,7 @@ inherited frViewHistoricoMovimientos: TfrViewHistoricoMovimientos HeaderAlignmentHorz = taRightJustify end object cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn + Caption = 'Almac'#233'n' DataBinding.FieldName = 'NOMBRE_ALMACEN' end object cxGridViewCAUSA: TcxGridDBColumn @@ -105,13 +107,25 @@ inherited frViewHistoricoMovimientos: TfrViewHistoricoMovimientos Width = 121 end inherited edtFechaFinFiltro: TcxDateEdit + Left = 344 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitLeft = 344 ExplicitWidth = 121 Width = 121 end + inherited txtFiltroTodo2: TcxTextEdit + Left = 329 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitLeft = 329 + ExplicitWidth = 250 + Width = 250 + end end end end diff --git a/Source/Modulos/Inventario/Data/Inventario_data.dproj b/Source/Modulos/Inventario/Data/Inventario_data.dproj index 68664cb3..aa25219a 100644 --- a/Source/Modulos/Inventario/Data/Inventario_data.dproj +++ b/Source/Modulos/Inventario/Data/Inventario_data.dproj @@ -39,61 +39,20 @@ Delphi.Personality Package - - False - True - False - - - True - False - False - - - True - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 3082 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - Inventario_data.dpk - - +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Inventario_data.dpk MainSource - - + +
DataModuleInventario
-