diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index c37c7b8..358f7fa 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,7 +52,8 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2330FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.3.0FactuGES v2FactuGES v22.3.3.0 +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGES v2FactuGES v22.3.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/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj index 620ec4e..84e7139 100644 --- a/Source/GUIBase/GUIBase.dproj +++ b/Source/GUIBase/GUIBase.dproj @@ -58,34 +58,34 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index 7362c63..2b6851c 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -55,6 +55,7 @@ type procedure FiltrarAno(AFactura: IBizFacturaCliente; ADynWhereDataTable: WideString; const Ano: String); function CambiarSituacion(AFactura : IBizFacturaCliente; AllItems: Boolean = false; ASituacion: String = CTE_PENDIENTE; AListaCausas: TStringList = nil): Boolean; function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean; + function enviarVerifactu(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AListaCausas: TStringList = nil): Boolean; end; TFacturasClienteController = class(TControllerBase, IFacturasClienteController) @@ -126,6 +127,7 @@ type function CambiarSituacion(AFactura : IBizFacturaCliente; AllItems: Boolean = false; ASituacion: String = CTE_PENDIENTE; AListaCausas: TStringList = nil): Boolean; function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean; + function enviarVerifactu(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AListaCausas: TStringList = nil): Boolean; end; implementation @@ -1048,6 +1050,72 @@ begin end; end; +function TFacturasClienteController.enviarVerifactu(AFactura: IBizFacturaCliente; AllItems: Boolean; AListaCausas: TStringList): Boolean; +//Solo devolverá true en el caso de eliminar todos y cada uno de los elementos a eliminar +var + bModificado: Boolean; + ACausa: Variant; + +begin + bModificado := True; + + if not Assigned(AFactura) then + raise Exception.Create ('Factura no asignada'); + + ShowHourglassCursor; + try + if not AFactura.DataTable.Active then + AFactura.DataTable.Active := True; + + if (AFactura.State in dsEditModes) then + 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 + begin + if not AFactura.DataTable.Editing then + AFactura.DataTable.Edit; + + AFactura.VERIFACTU := 1; + AFactura.DataTable.Post; + end; + //En el caso de querer modificar todos los items del objeto AFactura + if AllItems then + begin + with AFactura.DataTable do + begin + First; + while not EOF do + begin + if AFactura.VERIFACTU = 1 then + begin + bModificado := False; + Next; + end + else + begin + if not AFactura.DataTable.Editing then + AFactura.DataTable.Edit; + + AFactura.VERIFACTU := 1; + AFactura.DataTable.Post; + end; + end; + end; + end; + + try + AFactura.DataTable.ApplyUpdates; + Result := bModificado; + except + Result := False; + end; + + finally + HideHourglassCursor; + end; +end; + function TFacturasClienteController.EsEliminable(AFactura: IBizFacturaCliente; var AComentario: Variant): Boolean; begin Result := True; @@ -1055,7 +1123,12 @@ begin if not Assigned(AFactura) then raise Exception.Create ('Factura no asignado: EsEliminable'); - if (AFactura.SITUACION <> CTE_PENDIENTE) then + if (AFactura.VERIFACTU = 1) then + begin + Result := False; + AComentario := 'La factura se ha mandado a VERIFACTU, por lo que no puede ser eliminada'; + end + else if (AFactura.SITUACION <> CTE_PENDIENTE) then begin Result := False; AComentario := 'La factura esta parcial o totalmente pagada, por lo que no puede ser eliminada'; @@ -1080,8 +1153,12 @@ begin if not Assigned(AFactura) then raise Exception.Create ('Factura no asignado: EsModificable'); - - if (AFactura.SITUACION <> CTE_PENDIENTE) then + if (AFactura.VERIFACTU = 1) then + begin + Result := False; + AComentario := 'La factura se ha mandado a VERIFACTU, por lo que no puede ser eliminada'; + end + else if (AFactura.SITUACION <> CTE_PENDIENTE) then begin if (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR) or (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA) then diff --git a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm index c8d7db7..7a72d43 100644 --- a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.dfm @@ -344,6 +344,10 @@ inherited DataModuleFacturasCliente: TDataModuleFacturasCliente Name = 'PROCEDENCIA_CLIENTE' DataType = datString Size = 255 + end + item + Name = 'VERIFACTU' + DataType = datSmallInt 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 2c6dcbb..9d6bf02 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 = '{C20CF57F-5920-416F-9249-367A4691A064}'; - RID_FacturasCliente = '{C27622E4-449D-4D51-A938-F95AFFB07A9F}'; - RID_FacturasCliente_Detalles = '{0DB3EB96-08FF-4251-A5E1-82746147F81E}'; + RID_ListaAnosFacturas = '{EC351ED2-7BF8-494B-9B7C-495108F936A7}'; + RID_FacturasCliente = '{84BEF764-5EF2-4622-8D10-17FFE87C28E2}'; + RID_FacturasCliente_Detalles = '{B354C63E-51A8-4BB6-A70A-334BF9907B9C}'; { Data table names } nme_ListaAnosFacturas = 'ListaAnosFacturas'; @@ -80,6 +80,7 @@ const fld_FacturasClienteTIPO_FACTURA = 'TIPO_FACTURA'; fld_FacturasClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; fld_FacturasClientePROCEDENCIA_CLIENTE = 'PROCEDENCIA_CLIENTE'; + fld_FacturasClienteVERIFACTU = 'VERIFACTU'; { FacturasCliente field indexes } idx_FacturasClienteID = 0; @@ -137,6 +138,7 @@ const idx_FacturasClienteTIPO_FACTURA = 52; idx_FacturasClienteLISTA_NOMBRES = 53; idx_FacturasClientePROCEDENCIA_CLIENTE = 54; + idx_FacturasClienteVERIFACTU = 55; { FacturasCliente_Detalles fields } fld_FacturasCliente_DetallesID = 'ID'; @@ -173,7 +175,7 @@ const type { IListaAnosFacturas } IListaAnosFacturas = interface(IDAStronglyTypedDataTable) - ['{0DFD9CF9-9ACC-4CAB-AAA5-EA74D23016DE}'] + ['{303CA029-3F55-4813-90D8-0DFD72FD0C16}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -208,7 +210,7 @@ type { IFacturasCliente } IFacturasCliente = interface(IDAStronglyTypedDataTable) - ['{08554CA8-CD1B-493A-BEC1-5945282D8408}'] + ['{A13D1B5E-6AF7-4F09-A95F-C9C49D5AD089}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -429,6 +431,10 @@ type procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); function GetPROCEDENCIA_CLIENTEIsNull: Boolean; procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean); + function GetVERIFACTUValue: SmallInt; + procedure SetVERIFACTUValue(const aValue: SmallInt); + function GetVERIFACTUIsNull: Boolean; + procedure SetVERIFACTUIsNull(const aValue: Boolean); { Properties } @@ -542,6 +548,8 @@ type property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue; property PROCEDENCIA_CLIENTEIsNull: Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; + property VERIFACTU: SmallInt read GetVERIFACTUValue write SetVERIFACTUValue; + property VERIFACTUIsNull: Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; end; { TFacturasClienteDataTableRules } @@ -770,6 +778,10 @@ type procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual; function GetPROCEDENCIA_CLIENTEIsNull: Boolean; virtual; procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetVERIFACTUValue: SmallInt; virtual; + procedure SetVERIFACTUValue(const aValue: SmallInt); virtual; + function GetVERIFACTUIsNull: Boolean; virtual; + procedure SetVERIFACTUIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -882,6 +894,8 @@ type property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue; property PROCEDENCIA_CLIENTEIsNull: Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; + property VERIFACTU: SmallInt read GetVERIFACTUValue write SetVERIFACTUValue; + property VERIFACTUIsNull: Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -891,7 +905,7 @@ type { IFacturasCliente_Detalles } IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{14D5D2ED-02F4-44DC-899A-29119D36FD90}'] + ['{3D8FF2B9-F029-413E-913C-13EEFF51E336}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -2290,6 +2304,27 @@ begin DataTable.Fields[idx_FacturasClientePROCEDENCIA_CLIENTE].AsVariant := Null; end; +function TFacturasClienteDataTableRules.GetVERIFACTUValue: SmallInt; +begin + result := DataTable.Fields[idx_FacturasClienteVERIFACTU].AsSmallInt; +end; + +procedure TFacturasClienteDataTableRules.SetVERIFACTUValue(const aValue: SmallInt); +begin + DataTable.Fields[idx_FacturasClienteVERIFACTU].AsSmallInt := aValue; +end; + +function TFacturasClienteDataTableRules.GetVERIFACTUIsNull: boolean; +begin + result := DataTable.Fields[idx_FacturasClienteVERIFACTU].IsNull; +end; + +procedure TFacturasClienteDataTableRules.SetVERIFACTUIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_FacturasClienteVERIFACTU].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 d621efc..a41425b 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 = '{BC4B775B-C16B-48D3-B40F-B9684CDD9839}'; - RID_FacturasClienteDelta = '{AAE0C12B-EEB0-41BD-9374-D2492F491485}'; - RID_FacturasCliente_DetallesDelta = '{DEF2FAAB-FA4A-4478-B582-9F32D15AE44E}'; + RID_ListaAnosFacturasDelta = '{6532598B-1674-446B-ADA2-D250E745EC09}'; + RID_FacturasClienteDelta = '{3A243DCA-E97B-429B-9561-264578B839FF}'; + RID_FacturasCliente_DetallesDelta = '{841BC37D-B095-42F3-83B5-DFE3A61B8B44}'; type { IListaAnosFacturasDelta } IListaAnosFacturasDelta = interface(IListaAnosFacturas) - ['{BC4B775B-C16B-48D3-B40F-B9684CDD9839}'] + ['{6532598B-1674-446B-ADA2-D250E745EC09}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +50,7 @@ type { IFacturasClienteDelta } IFacturasClienteDelta = interface(IFacturasCliente) - ['{AAE0C12B-EEB0-41BD-9374-D2492F491485}'] + ['{3A243DCA-E97B-429B-9561-264578B839FF}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -107,6 +107,7 @@ type function GetOldTIPO_FACTURAValue : String; function GetOldLISTA_NOMBRESValue : String; function GetOldPROCEDENCIA_CLIENTEValue : String; + function GetOldVERIFACTUValue : SmallInt; { Properties } property OldID : Integer read GetOldIDValue; @@ -164,6 +165,7 @@ type property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue; property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue; + property OldVERIFACTU : SmallInt read GetOldVERIFACTUValue; end; { TFacturasClienteBusinessProcessorRules } @@ -502,6 +504,12 @@ type function GetOldPROCEDENCIA_CLIENTEIsNull: Boolean; virtual; procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual; procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetVERIFACTUValue: SmallInt; virtual; + function GetVERIFACTUIsNull: Boolean; virtual; + function GetOldVERIFACTUValue: SmallInt; virtual; + function GetOldVERIFACTUIsNull: Boolean; virtual; + procedure SetVERIFACTUValue(const aValue: SmallInt); virtual; + procedure SetVERIFACTUIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -724,6 +732,10 @@ type property PROCEDENCIA_CLIENTEIsNull : Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue; property OldPROCEDENCIA_CLIENTEIsNull : Boolean read GetOldPROCEDENCIA_CLIENTEIsNull; + property VERIFACTU : SmallInt read GetVERIFACTUValue write SetVERIFACTUValue; + property VERIFACTUIsNull : Boolean read GetVERIFACTUIsNull write SetVERIFACTUIsNull; + property OldVERIFACTU : SmallInt read GetOldVERIFACTUValue; + property OldVERIFACTUIsNull : Boolean read GetOldVERIFACTUIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -733,7 +745,7 @@ type { IFacturasCliente_DetallesDelta } IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) - ['{DEF2FAAB-FA4A-4478-B582-9F32D15AE44E}'] + ['{841BC37D-B095-42F3-83B5-DFE3A61B8B44}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_FACTURAValue : Integer; @@ -2693,6 +2705,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePROCEDENCIA_CLIENTE] := Null; end; +function TFacturasClienteBusinessProcessorRules.GetVERIFACTUValue: SmallInt; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU]; +end; + +function TFacturasClienteBusinessProcessorRules.GetVERIFACTUIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU]); +end; + +function TFacturasClienteBusinessProcessorRules.GetOldVERIFACTUValue: SmallInt; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteVERIFACTU]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldVERIFACTUIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteVERIFACTU]); +end; + +procedure TFacturasClienteBusinessProcessorRules.SetVERIFACTUValue(const aValue: SmallInt); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU] := aValue; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetVERIFACTUIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteVERIFACTU] := Null; +end; + { TFacturasCliente_DetallesBusinessProcessorRules } constructor TFacturasCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas index 5412c0a..dd71674 100644 --- a/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas @@ -257,6 +257,7 @@ begin SITUACION := CTE_PENDIENTE; ID_CLIENTE := ID_NULO; SIN_COMISION := 0; + VERIFACTU := 0; ID_FORMA_PAGO := AppFactuGES.EmpresaActiva.ID_FORMA_PAGO; ID_TIPO_IVA := AppFactuGES.EmpresaActiva.ID_TIPO_IVA; diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm index 12cdf61..c4c607c 100644 --- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm +++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm @@ -267,6 +267,10 @@ object srvFacturasCliente: TsrvFacturasCliente item DatasetField = 'REF_FORMA_PAGO' TableField = 'REF_FORMA_PAGO' + end + item + DatasetField = 'VERIFACTU' + TableField = 'VERIFACTU' end> end> Name = 'FacturasCliente' @@ -555,6 +559,10 @@ object srvFacturasCliente: TsrvFacturasCliente Name = 'PROCEDENCIA_CLIENTE' DataType = datString Size = 255 + end + item + Name = 'VERIFACTU' + DataType = datSmallInt end> end item @@ -1343,6 +1351,11 @@ object srvFacturasCliente: TsrvFacturasCliente Size = 255 Value = '' end + item + Name = 'VERIFACTU' + DataType = datSmallInt + Value = '' + end item Name = 'OLD_ID' Value = '' @@ -1369,7 +1382,7 @@ object srvFacturasCliente: TsrvFacturasCliente 'RAR_CONTABILIDAD = :IGNORAR_CONTABILIDAD,'#10' ID_TIENDA = :ID_TI' + 'ENDA,'#10' ID_CONTRATO = :ID_CONTRATO,'#10' SIN_COMISION = :SIN_CO' + 'MISION,'#10' TIPO_FACTURA = :TIPO_FACTURA,'#10' SITUACION = :SITUA' + - 'CION'#10' WHERE'#10' (ID = :OLD_ID);'#10 + 'CION,'#10' VERIFACTU = :VERIFACTU'#10' WHERE'#10' (ID = :OLD_ID);'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm index fd56f48..159b45f 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm @@ -2,8 +2,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Caption = 'Lista de facturas de cliente' ClientHeight = 666 ClientWidth = 640 - ExplicitWidth = 648 - ExplicitHeight = 700 + ExplicitWidth = 656 + ExplicitHeight = 704 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader @@ -66,7 +66,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end end inherited tbxFiltro: TTBXToolbar - ExplicitWidth = 481 + ExplicitWidth = 487 inherited lblAno: TTBXLabelItem Visible = True end @@ -85,10 +85,10 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente ExplicitWidth = 640 end inherited TBXTMain2: TTBXToolbar - Left = 481 + Left = 487 Visible = True - ExplicitLeft = 481 - ExplicitWidth = 159 + ExplicitLeft = 487 + ExplicitWidth = 153 object TBXItem42: TTBXItem Action = actCambiarSituacion DisplayMode = nbdmImageAndText @@ -107,6 +107,12 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Action = actInformes DisplayMode = nbdmImageAndText end + object TBSeparatorItem1: TTBSeparatorItem + end + object TBXItem46: TTBXItem + Action = actMandarVerifactu + DisplayMode = nbdmImageAndText + end end end inherited StatusBar: TJvStatusBar @@ -117,9 +123,9 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end inline frViewFacturasCliente1: TfrViewFacturasCliente [3] Left = 0 - Top = 102 + Top = 105 Width = 640 - Height = 545 + Height = 542 Align = alClient Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -129,14 +135,14 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente ParentFont = False TabOrder = 3 ReadOnly = False - ExplicitTop = 102 + ExplicitTop = 105 ExplicitWidth = 640 - ExplicitHeight = 545 + ExplicitHeight = 542 inherited cxGrid: TcxGrid Width = 640 - Height = 414 + Height = 411 ExplicitWidth = 640 - ExplicitHeight = 414 + ExplicitHeight = 411 inherited cxGridView: TcxGridDBTableView DataController.Summary.DefaultGroupSummaryItems = < item @@ -279,6 +285,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 640 + ExplicitTop = 75 ExplicitWidth = 640 inherited tbxBotones: TTBXToolbar Width = 630 @@ -288,8 +295,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end end inherited pnlAgrupaciones: TTBXDockablePanel - Top = 519 - ExplicitTop = 519 + Top = 516 + ExplicitTop = 516 ExplicitWidth = 640 inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 640 @@ -385,6 +392,12 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente OnExecute = actGenerarPDFExecute OnUpdate = actGenerarPDFUpdate end + object actMandarVerifactu: TAction + Caption = 'Mandar Verifactu' + ImageIndex = 16 + OnExecute = actMandarVerifactuExecute + OnUpdate = actMandarVerifactuUpdate + end end inherited SmallImages: TPngImageList [5] PngImages = < @@ -3608,39 +3621,40 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente 000000180806000000E0773DF8000000017352474200AECE1CE9000000046741 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 - 0AE900000AE901FD75CED3000003F049444154484BBD557B6C53651C3D7DAD7B - B0ADADC0363ADDA0834D2DDA6E5904A24C17E64864BAF8484C348E104940FD47 - 128D31121213134DD4C4F8644F794C6413188E81A003B3A15B8AC87C4CA39D9A - 685013515B36D8B3F7E7F9AEDCDAB9760F62BCC94D9ADEEF3BE7FCCE777EBFCF - 2422F8DF9ED781A56D0EFB730D56945D0EA9BE3F2F676F3D70DF36C01C15FF0A - 30AF333BB9E9E74ADF68E4A12A19A8F0851BADB869B6242F00292DD9AE6DBD2B - BD43273D4E79371D5A1DB05527B807B0BCE7C0FEC1EB20A3373A447B60B5688F - 544BF0567FA8113393D45970F3C9E265FD7D371448E77C93746442DB6945B322 - D5099ACCD8F8DBD5D0467C90E1EB21178A6D3276979F247748B0A2385C6FC5EA - 789550A1EBD02247DD57AB964DF4E4A7C9072E487B06B426139E55A2D51E9DE0 - 656051201B030A7C885584BC9073D740C2E55789B6799D0C54964CB1EB0D6065 - 4F81EBC76FFDD9F2E17CE8E0B465BCC18C4763C544CF603B5074C68D5FFFBC16 - C26AE49742C84F4B21677D193252532EC1B5A521E34C76D9CD0FF67B175CFCCC - 931A056F4BC3700370FFBF2B9D94D02660455F2E060DF01F3C90E062C8371E8B - FC5EE593606569B8353D69F7803F2B12C8B546C10F109CA9B92D9E8D535A6087 - 05EBFADC1835C0BFCE837C7125E44C2EC94A72E4F4E264F928CB2427AE80BCEF - 841C9C8771567F6FA2B4C5EDB15D366CF8D48D8928B81B722A07D29305E95E80 - 28383D8FD0F387A78B72C2266E4EC29304D5782E71C10F5D4ACB4C7D92904075 - E1DE64040254FE319577C5283F9209A1EF5A1DE34802D39C2BA0A7B6B7D3936A - BFBC65B966801FA7E7C7E8F96182D31AD99F06D9930CAD16786A4E04044F6D77 - BB0E9CDB52239F143A75E5F1C05B52206FD9216F5A75922DB33A6482671E5B92 - 73E2E2E335F25DA57F0A382DFB638F1DE70DF09D3648A305B2DD840936DEA669 - 634ACFAD47721D1D639BAA24B47EAD742D344D52DE9A82610A287B0D286C34A3 - 7B87F56FF05A1384E0C2293AC66F35091BAD25DDF6F460758936B1A1424E79D2 - A593AD7FD401E9C880EC4B458436AC3736B770CE10F431FE7741811BEF25128E - A17F1E3D4554527E7655FEB8DCE993EF4BDD93C0555AEA4D783E5EF954EC2568 - 2F5F2D8668E455A0CA58AF139C2E5AD82FD5CBE5FC9A0239CE716B2867970A3B - BB4BA52AD121D2DA24126D25C9704C2543DCB3263A4DBBF39DAD91DBBD12C84B - 9904DE6CC7A0BAA1666A26F59D80C524E88BA924AC26AE5E418305777F5EE414 - 5E3AC20E95362A6752D48DB47936E0C69A97003B053DA3CE82E0115A55A613A8 - 32391A7ADBD9400AFC9D5426C48CA3AA9BE74260ACA5652BF8BE18B548FDE0F5 - E662F40E2BE5CC77880B965C0EF8B4F7818A1F6D7982F1DBF85F801B15FC059E - 6028BEE22B69170000000049454E44AE426082} + 0AE900000AE901FD75CED30000040449444154484BB5957B6C53551CC7BF7DAD + 7BD0AD2D8F6D74BA413736B060BB65911165BA304702D3C54762A271844002EA + 3F90608C9190989868A226C6277B0A38918DC7700CE431301BBAA5080C6510EC + D444C32301B465833D7B7FFECEEDE96537ED3209F19B9CA4F79EDFEFF33DE7D7 + DF391744F4BF0E9D3E07F25AEDD6F7EACD2895AFEE496A7E76E6AE3AE0C52D80 + 5133F80498D69191D878A5C23B127EA592FACBBDA106331E8BCC4EAD0F80A4E6 + 0CE7969E12CFE049B783BEB541A90536AB06CF03A6EFECD83BB00834F2A89D94 + 979792F25A15059EF4051B30B549AD098F9F2C9CD7D7FB482E75CC30507B1A94 + ED66340953D5A0D188B5D7E74319F682861E06DD2EB4D0E8B33E36799A02E585 + A13A33964A964EBC42E781D9F6DA0B4BE68D77E7A4D03127A82D154AA301EF8A + 458B18D5E06360B63F03FD023EC8BB087A4037168042650F92B27E25F55714C5 + 94EB0BA0A43BD7F9E7AFBE0CFA7E0654389765ACDE880D324495F61F6C050ACE + BA70ED9F8740BC1BBA9A0FFA2B0F74D99B4AC3D56514585E1C8C9AECB01AD7F4 + 7966DE39E74ED6E0AD2918AA075E526113A4190835028B7BB3301085FFE10605 + E6802EB94D74B3D24B818AE2508B2DE1AB7E5F7AD89F65D6E0FB18CE5DB34262 + 74D219086D336165AF0B2351F8C56CD02F0F80CE66F17351269D9E93483FA41B + E8C474D0510768FF348CF1EE5F90E9318A3110DA61C1EA332E8C6B7017E85426 + A83B1DD435131A9C6B1EE69ABF2AD3E22AAE81505302DE64A83219FC80EC1619 + 3EA9263510A7705722FC7E86FFC8F0CE09F043696ADD95DA88812192115F710D + B8A6966F6C0935E79F58A844E1C7197E84E10719CEA5A1BD29A09D89506A80B7 + 645A5CC518303CB9CDE5DC77636335FD94EF9814DE9C04FADA0AFAD2AC9A6C94 + E931D219303CEDC8DCCC13775EAFA6DF2A7C31702ED9DF3BADB815856FB7801A + 4CA0AD068CF3C15B27313A69065C73F3A12C7BFBE8BA4A0AAE5A4E9DB30C3A78 + 4B12867801A59F01F90D46746D3347E0350610C3896FD1519EAB8ED0EE4A3368 + B659DE1EA82A52C65797D329B78D3AF8001DB683DA53417B9211E632AC8A4472 + 2CDF330CDDC4EF6E0B78744813BE86EE4A35E095945D5E923346CF78E9F76297 + 0E2EBAA5CE80F765BC4E0CF330B4878732C168F853A05286440C4E17CCEAA3AA + 85746B592E1DE7EB360AE7534A7CB23B4557C9F818716913D868339B0C4DD8C9 + 20E72C13F3AA41578EA325FC9487FCD9493A789315031C9CA792A610030B19DE + 1B35E111E251A21AD49BF0DCCF050EE28F8E38A1D4CA70EE14F1455A2FF3FF93 + 3E02ACBCA077788C323CCCA52A550DC436F96AE869E31E17F0DDC9DC21461C16 + A759E6DE93B8648B797C287EAB0642FC797372EB1D142BE7FE0E72C0DCC8CCFD + 49331012EDC7657983DB6FAD7C75DF2222FC0B51266D78E692E7220000000049 + 454E44AE426082} Instruction.Text = 'Las siguientes facturas no han podido ser eliminadas:' Instruction.Glyph.Data = { 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 @@ -4232,39 +4246,40 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente 000000180806000000E0773DF8000000017352474200AECE1CE9000000046741 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 - 0AE900000AE901FD75CED3000003F049444154484BBD557B6C53651C3D7DAD7B - B0ADADC0363ADDA0834D2DDA6E5904A24C17E64864BAF8484C348E104940FD47 - 128D31121213134DD4C4F8644F794C6413188E81A003B3A15B8AC87C4CA39D9A - 685013515B36D8B3F7E7F9AEDCDAB9760F62BCC94D9ADEEF3BE7FCCE777EBFCF - 2422F8DF9ED781A56D0EFB730D56945D0EA9BE3F2F676F3D70DF36C01C15FF0A - 30AF333BB9E9E74ADF68E4A12A19A8F0851BADB869B6242F00292DD9AE6DBD2B - BD43273D4E79371D5A1DB05527B807B0BCE7C0FEC1EB20A3373A447B60B5688F - 544BF0567FA8113393D45970F3C9E265FD7D371448E77C93746442DB6945B322 - D5099ACCD8F8DBD5D0467C90E1EB21178A6D3276979F247748B0A2385C6FC5EA - 789550A1EBD02247DD57AB964DF4E4A7C9072E487B06B426139E55A2D51E9DE0 - 656051201B030A7C885584BC9073D740C2E55789B6799D0C54964CB1EB0D6065 - 4F81EBC76FFDD9F2E17CE8E0B465BCC18C4763C544CF603B5074C68D5FFFBC16 - C26AE49742C84F4B21677D193252532EC1B5A521E34C76D9CD0FF67B175CFCCC - 931A056F4BC3700370FFBF2B9D94D02660455F2E060DF01F3C90E062C8371E8B - FC5EE593606569B8353D69F7803F2B12C8B546C10F109CA9B92D9E8D535A6087 - 05EBFADC1835C0BFCE837C7125E44C2EC94A72E4F4E264F928CB2427AE80BCEF - 841C9C8771567F6FA2B4C5EDB15D366CF8D48D8928B81B722A07D29305E95E80 - 28383D8FD0F387A78B72C2266E4EC29304D5782E71C10F5D4ACB4C7D92904075 - E1DE64040254FE319577C5283F9209A1EF5A1DE34802D39C2BA0A7B6B7D3936A - BFBC65B966801FA7E7C7E8F96182D31AD99F06D9930CAD16786A4E04044F6D77 - BB0E9CDB52239F143A75E5F1C05B52206FD9216F5A75922DB33A6482671E5B92 - 73E2E2E335F25DA57F0A382DFB638F1DE70DF09D3648A305B2DD840936DEA669 - 634ACFAD47721D1D639BAA24B47EAD742D344D52DE9A82610A287B0D286C34A3 - 7B87F56FF05A1384E0C2293AC66F35091BAD25DDF6F460758936B1A1424E79D2 - A593AD7FD401E9C880EC4B458436AC3736B770CE10F431FE7741811BEF25128E - A17F1E3D4554527E7655FEB8DCE993EF4BDD93C0555AEA4D783E5EF954EC2568 - 2F5F2D8668E455A0CA58AF139C2E5AD82FD5CBE5FC9A0239CE716B2867970A3B - BB4BA52AD121D2DA24126D25C9704C2543DCB3263A4DBBF39DAD91DBBD12C84B - 9904DE6CC7A0BAA1666A26F59D80C524E88BA924AC26AE5E418305777F5EE414 - 5E3AC20E95362A6752D48DB47936E0C69A97003B053DA3CE82E0115A55A613A8 - 32391A7ADBD9400AFC9D5426C48CA3AA9BE74260ACA5652BF8BE18B548FDE0F5 - E662F40E2BE5CC77880B965C0EF8B4F7818A1F6D7982F1DBF85F801B15FC059E - 6028BEE22B69170000000049454E44AE426082} + 0AE900000AE901FD75CED30000040449444154484BB5957B6C53551CC7BF7DAD + 7BD0AD2D8F6D74BA413736B060BB65911165BA304702D3C54762A271844002EA + 3F90608C9190989868A226C6277B0A38918DC7700CE431301BBAA5080C6510EC + D444C32301B465833D7B7FFECEEDE96537ED3209F19B9CA4F79EDFEFF33DE7D7 + DF391744F4BF0E9D3E07F25AEDD6F7EACD2895AFEE496A7E76E6AE3AE0C52D80 + 5133F80498D69191D878A5C23B127EA592FACBBDA106331E8BCC4EAD0F80A4E6 + 0CE7969E12CFE049B783BEB541A90536AB06CF03A6EFECD83BB00834F2A89D94 + 979792F25A15059EF4051B30B549AD098F9F2C9CD7D7FB482E75CC30507B1A94 + ED66340953D5A0D188B5D7E74319F682861E06DD2EB4D0E8B33E36799A02E585 + A13A33964A964EBC42E781D9F6DA0B4BE68D77E7A4D03127A82D154AA301EF8A + 458B18D5E06360B63F03FD023EC8BB087A4037168042650F92B27E25F55714C5 + 94EB0BA0A43BD7F9E7AFBE0CFA7E0654389765ACDE880D324495F61F6C050ACE + BA70ED9F8740BC1BBA9A0FFA2B0F74D99B4AC3D56514585E1C8C9AECB01AD7F4 + 7966DE39E74ED6E0AD2918AA075E526113A4190835028B7BB3301085FFE10605 + E6802EB94D74B3D24B818AE2508B2DE1AB7E5F7AD89F65D6E0FB18CE5DB34262 + 74D219086D336165AF0B2351F8C56CD02F0F80CE66F17351269D9E93483FA41B + E8C474D0510768FF348CF1EE5F90E9318A3110DA61C1EA332E8C6B7017E85426 + A83B1DD435131A9C6B1EE69ABF2AD3E22AAE81505302DE64A83219FC80EC1619 + 3EA9263510A7705722FC7E86FFC8F0CE09F043696ADD95DA88812192115F710D + B8A6966F6C0935E79F58A844E1C7197E84E10719CEA5A1BD29A09D89506A80B7 + 645A5CC518303CB9CDE5DC77636335FD94EF9814DE9C04FADA0AFAD2AC9A6C94 + E931D219303CEDC8DCCC13775EAFA6DF2A7C31702ED9DF3BADB815856FB7801A + 4CA0AD068CF3C15B27313A69065C73F3A12C7BFBE8BA4A0AAE5A4E9DB30C3A78 + 4B12867801A59F01F90D46746D3347E0350610C3896FD1519EAB8ED0EE4A3368 + B659DE1EA82A52C65797D329B78D3AF8001DB683DA53417B9211E632AC8A4472 + 2CDF330CDDC4EF6E0B78744813BE86EE4A35E095945D5E923346CF78E9F76297 + 0E2EBAA5CE80F765BC4E0CF330B4878732C168F853A05286440C4E17CCEAA3AA + 85746B592E1DE7EB360AE7534A7CB23B4557C9F818716913D868339B0C4DD8C9 + 20E72C13F3AA41578EA325FC9487FCD9493A789315031C9CA792A610030B19DE + 1B35E111E251A21AD49BF0DCCF050EE28F8E38A1D4CA70EE14F1455A2FF3FF93 + 3E02ACBCA077788C323CCCA52A550DC436F96AE869E31E17F0DDC9DC21461C16 + A759E6DE93B8648B797C287EAB0642FC797372EB1D142BE7FE0E72C0DCC8CCFD + 49331012EDC7657983DB6FAD7C75DF2222FC0B51266D78E692E7220000000049 + 454E44AE426082} Instruction.Text = 'Las siguientes facturas no han podido ser modificadas:' Instruction.Glyph.Data = { 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas index be879d9..621fcb0 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas @@ -47,6 +47,9 @@ type TBXItem44: TTBXItem; actGenerarPDF: TAction; TBXItem45: TTBXItem; + actMandarVerifactu: TAction; + TBXItem46: TTBXItem; + TBSeparatorItem1: TTBSeparatorItem; procedure FormShow(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure actNuevaFacturaExecute(Sender: TObject); @@ -62,6 +65,8 @@ type procedure actVerContratoExecute(Sender: TObject); procedure actGenerarPDFExecute(Sender: TObject); procedure actGenerarPDFUpdate(Sender: TObject); + procedure actMandarVerifactuExecute(Sender: TObject); + procedure actMandarVerifactuUpdate(Sender: TObject); private FFacturas: IBizFacturaCliente; @@ -304,6 +309,83 @@ begin end; +procedure TfEditorFacturasCliente.actMandarVerifactuExecute(Sender: TObject); +var + AFacturas: IBizFacturaCliente; + AllItems: Boolean; + AListaCausas: TStringList; + +begin + AFacturas := Nil; + AllItems := False; + AListaCausas := TStringList.Create; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('¿Desea mandar a verifactu los borradores seleccionados?, 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 + AFacturas := Facturas; + end; + + if Assigned(AFacturas) then + begin + FController.enviarVerifactu(AFacturas, AllItems, AListaCausas); + + if AllItems then + begin +{ if (AFacturas.DataTable.RecordCount > 0) then + begin + with AFacturas.DataTable do + begin + JsListaFacturasNoEliminadas.Content.Clear; + First; + while not EOF do + begin + JsListaFacturasNoEliminadas.Content.Add('Ref. factura: ' + AFacturas.REFERENCIA + ' ' + AFacturas.NOMBRE); + if Length(AListaCausas.Values[IntToStr(AFacturas.ID)]) > 0 then + JsListaFacturasNoEliminadas.Content.Add(VarToStr(AListaCausas.Values[IntToStr(AFacturas.ID)])) + else + JsListaFacturasNoEliminadas.Content.Add('La factura puede tener algún recibo devuelto y no puede ser eliminada'); + JsListaFacturasNoEliminadas.Content.Add(''); + Next; + end; + end; + JsListaFacturasNoEliminadas.Execute; + end; +} + actRefrescar.Execute; + end + end; + + AListaCausas.Free; + ViewGrid.GotoFirst; +end; + +procedure TfEditorFacturasCliente.actMandarVerifactuUpdate(Sender: TObject); +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) + else + (Sender as TAction).Enabled := False; +} +end; + procedure TfEditorFacturasCliente.actNuevaFacturaExecute(Sender: TObject); begin actNuevo.Execute; diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm index 0535a09..9af4ce8 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm @@ -196,6 +196,20 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente Caption = 'Forma pago' DataBinding.FieldName = 'REF_FORMA_PAGO' end + object cxGridViewVERIFACTU: TcxGridDBColumn + DataBinding.FieldName = 'VERIFACTU' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Verifactu' + ImageIndex = 0 + Value = 1 + end + item + Value = 0 + end> + end end inherited cxGridLevel: TcxGridLevel Caption = 'Todas' @@ -223,8 +237,6 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 273 - Width = 273 end inherited edtFechaIniFiltro: TcxDateEdit Style.LookAndFeel.SkinName = '' @@ -263,15 +275,13 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente StyleHot.LookAndFeel.SkinName = '' end inherited txtFiltroTodo2: TcxTextEdit - Left = 445 + Left = 444 Enabled = True Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 445 - ExplicitWidth = 275 - Width = 275 + ExplicitLeft = 444 end inherited dxLayoutControl1Group_Root: TdxLayoutGroup inherited dxLayoutControl1Group3: TdxLayoutGroup @@ -284,6 +294,7 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente end inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 802 + ExplicitTop = 75 ExplicitWidth = 802 inherited tbxBotones: TTBXToolbar Width = 792 diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas index 0721bea..b209013 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas @@ -68,6 +68,7 @@ type cxGridViewLOPD: TcxGridDBColumn; cxGridViewPROCEDENCIA_CLIENTE: TcxGridDBColumn; cxGridViewREF_FORMA_PAGO: TcxGridDBColumn; + cxGridViewVERIFACTU: TcxGridDBColumn; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 7e926a8..aa26f84 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -28,7 +28,7 @@ Delphi.Personality - FalseTrueFalseTrueFalse2330FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.3.0FactuGES v2(Servidor)2.3.3.0viernes, 14 de marzo de 2025 16:56 + FalseTrueFalseTrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGES v2(Servidor)2.3.4.0viernes, 14 de marzo de 2025 18:44 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES_Server.dpr