Version inicial para verifactu

This commit is contained in:
roberto 2025-10-29 16:20:13 +01:00
parent 3846b5c97a
commit b1243e077c
13 changed files with 415 additions and 132 deletions

View File

@ -52,7 +52,8 @@
<Borland.Personality>Delphi.Personality</Borland.Personality> <Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType>VCLApplication</Borland.ProjectType> <Borland.ProjectType>VCLApplication</Borland.ProjectType>
<BorlandProject> <BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">C:\Archivos de programa\Borland\Delphi7\Bin\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">3</VersionInfo><VersionInfo Name="Release">3</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.3.3.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES v2</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES v2</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">2.3.3.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Excluded_Packages> <BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">C:\Archivos de programa\Borland\Delphi7\Bin\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">3</VersionInfo><VersionInfo Name="Release">4</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.3.4.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES v2</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES v2</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">2.3.4.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl">File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found</Excluded_Packages> <Excluded_Packages Name="C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl">File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found</Excluded_Packages>
</Excluded_Packages><Source><Source Name="MainSource">FactuGES.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject> </Excluded_Packages><Source><Source Name="MainSource">FactuGES.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject>

View File

@ -58,34 +58,34 @@
<DelphiCompile Include="GUIBase.dpk"> <DelphiCompile Include="GUIBase.dpk">
<MainSource>MainSource</MainSource> <MainSource>MainSource</MainSource>
</DelphiCompile> </DelphiCompile>
<DCCReference Include="..\Modulos\Facturas de proveedor\Base.dcp" /> <DCCReference Include="..\Servidor\Base.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\ccpackD11.dcp" /> <DCCReference Include="..\Servidor\ccpackD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\cxDataD11.dcp" /> <DCCReference Include="..\Servidor\cxDataD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\cxEditorsD11.dcp" /> <DCCReference Include="..\Servidor\cxEditorsD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\cxExportD11.dcp" /> <DCCReference Include="..\Servidor\cxExportD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\cxLibraryD11.dcp" /> <DCCReference Include="..\Servidor\cxLibraryD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dbrtl.dcp" /> <DCCReference Include="..\Servidor\dbrtl.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dxGDIPlusD11.dcp" /> <DCCReference Include="..\Servidor\dxGDIPlusD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dxLayoutControlD11.dcp" /> <DCCReference Include="..\Servidor\dxLayoutControlD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dxPScxCommonD11.dcp" /> <DCCReference Include="..\Servidor\dxPScxCommonD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dxPScxGrid6LnkD11.dcp" /> <DCCReference Include="..\Servidor\dxPScxGrid6LnkD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\dxThemeD11.dcp" /> <DCCReference Include="..\Servidor\dxThemeD11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\frx11.dcp" /> <DCCReference Include="..\Servidor\frx11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\frxe11.dcp" /> <DCCReference Include="..\Servidor\frxe11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\fs11.dcp" /> <DCCReference Include="..\Servidor\fs11.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\JvAppFrmD11R.dcp" /> <DCCReference Include="..\Servidor\JvAppFrmD11R.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\JvCtrlsD11R.dcp" /> <DCCReference Include="..\Servidor\JvCtrlsD11R.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\JvGlobusD11R.dcp" /> <DCCReference Include="..\Servidor\JvGlobusD11R.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\PngComponentsD10.dcp" /> <DCCReference Include="..\Servidor\PngComponentsD10.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\PNG_D10.dcp" /> <DCCReference Include="..\Servidor\PNG_D10.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\rtl.dcp" /> <DCCReference Include="..\Servidor\rtl.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\tb2k_d10.dcp" /> <DCCReference Include="..\Servidor\tb2k_d10.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\tbx_d10.dcp" /> <DCCReference Include="..\Servidor\tbx_d10.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\vcl.dcp" /> <DCCReference Include="..\Servidor\vcl.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\vclactnband.dcp" /> <DCCReference Include="..\Servidor\vclactnband.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\vcldb.dcp" /> <DCCReference Include="..\Servidor\vcldb.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\vcljpg.dcp" /> <DCCReference Include="..\Servidor\vcljpg.dcp" />
<DCCReference Include="..\Modulos\Facturas de proveedor\vclx.dcp" /> <DCCReference Include="..\Servidor\vclx.dcp" />
<DCCReference Include="uDialogBase.pas"> <DCCReference Include="uDialogBase.pas">
<Form>fDialogBase</Form> <Form>fDialogBase</Form>
</DCCReference> </DCCReference>

View File

@ -55,6 +55,7 @@ type
procedure FiltrarAno(AFactura: IBizFacturaCliente; ADynWhereDataTable: WideString; const Ano: String); 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 CambiarSituacion(AFactura : IBizFacturaCliente; AllItems: Boolean = false; ASituacion: String = CTE_PENDIENTE; AListaCausas: TStringList = nil): Boolean;
function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean; function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean;
function enviarVerifactu(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AListaCausas: TStringList = nil): Boolean;
end; end;
TFacturasClienteController = class(TControllerBase, IFacturasClienteController) 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 CambiarSituacion(AFactura : IBizFacturaCliente; AllItems: Boolean = false; ASituacion: String = CTE_PENDIENTE; AListaCausas: TStringList = nil): Boolean;
function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean; function AsignarLOPD(AFacturas: IBizFacturaCliente): Boolean;
function enviarVerifactu(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AListaCausas: TStringList = nil): Boolean;
end; end;
implementation implementation
@ -1048,6 +1050,72 @@ begin
end; end;
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; function TFacturasClienteController.EsEliminable(AFactura: IBizFacturaCliente; var AComentario: Variant): Boolean;
begin begin
Result := True; Result := True;
@ -1055,7 +1123,12 @@ begin
if not Assigned(AFactura) then if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsEliminable'); 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 begin
Result := False; Result := False;
AComentario := 'La factura esta parcial o totalmente pagada, por lo que no puede ser eliminada'; 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 if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsModificable'); raise Exception.Create ('Factura no asignado: EsModificable');
if (AFactura.VERIFACTU = 1) then
if (AFactura.SITUACION <> CTE_PENDIENTE) 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 begin
if (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR) if (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR)
or (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA) then or (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA) then

View File

@ -344,6 +344,10 @@ inherited DataModuleFacturasCliente: TDataModuleFacturasCliente
Name = 'PROCEDENCIA_CLIENTE' Name = 'PROCEDENCIA_CLIENTE'
DataType = datString DataType = datString
Size = 255 Size = 255
end
item
Name = 'VERIFACTU'
DataType = datSmallInt
end> end>
Params = <> Params = <>
StreamingOptions = [soDisableEventsWhileStreaming] StreamingOptions = [soDisableEventsWhileStreaming]

View File

@ -9,9 +9,9 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_ListaAnosFacturas = '{C20CF57F-5920-416F-9249-367A4691A064}'; RID_ListaAnosFacturas = '{EC351ED2-7BF8-494B-9B7C-495108F936A7}';
RID_FacturasCliente = '{C27622E4-449D-4D51-A938-F95AFFB07A9F}'; RID_FacturasCliente = '{84BEF764-5EF2-4622-8D10-17FFE87C28E2}';
RID_FacturasCliente_Detalles = '{0DB3EB96-08FF-4251-A5E1-82746147F81E}'; RID_FacturasCliente_Detalles = '{B354C63E-51A8-4BB6-A70A-334BF9907B9C}';
{ Data table names } { Data table names }
nme_ListaAnosFacturas = 'ListaAnosFacturas'; nme_ListaAnosFacturas = 'ListaAnosFacturas';
@ -80,6 +80,7 @@ const
fld_FacturasClienteTIPO_FACTURA = 'TIPO_FACTURA'; fld_FacturasClienteTIPO_FACTURA = 'TIPO_FACTURA';
fld_FacturasClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; fld_FacturasClienteLISTA_NOMBRES = 'LISTA_NOMBRES';
fld_FacturasClientePROCEDENCIA_CLIENTE = 'PROCEDENCIA_CLIENTE'; fld_FacturasClientePROCEDENCIA_CLIENTE = 'PROCEDENCIA_CLIENTE';
fld_FacturasClienteVERIFACTU = 'VERIFACTU';
{ FacturasCliente field indexes } { FacturasCliente field indexes }
idx_FacturasClienteID = 0; idx_FacturasClienteID = 0;
@ -137,6 +138,7 @@ const
idx_FacturasClienteTIPO_FACTURA = 52; idx_FacturasClienteTIPO_FACTURA = 52;
idx_FacturasClienteLISTA_NOMBRES = 53; idx_FacturasClienteLISTA_NOMBRES = 53;
idx_FacturasClientePROCEDENCIA_CLIENTE = 54; idx_FacturasClientePROCEDENCIA_CLIENTE = 54;
idx_FacturasClienteVERIFACTU = 55;
{ FacturasCliente_Detalles fields } { FacturasCliente_Detalles fields }
fld_FacturasCliente_DetallesID = 'ID'; fld_FacturasCliente_DetallesID = 'ID';
@ -173,7 +175,7 @@ const
type type
{ IListaAnosFacturas } { IListaAnosFacturas }
IListaAnosFacturas = interface(IDAStronglyTypedDataTable) IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
['{0DFD9CF9-9ACC-4CAB-AAA5-EA74D23016DE}'] ['{303CA029-3F55-4813-90D8-0DFD72FD0C16}']
{ Property getters and setters } { Property getters and setters }
function GetANOValue: String; function GetANOValue: String;
procedure SetANOValue(const aValue: String); procedure SetANOValue(const aValue: String);
@ -208,7 +210,7 @@ type
{ IFacturasCliente } { IFacturasCliente }
IFacturasCliente = interface(IDAStronglyTypedDataTable) IFacturasCliente = interface(IDAStronglyTypedDataTable)
['{08554CA8-CD1B-493A-BEC1-5945282D8408}'] ['{A13D1B5E-6AF7-4F09-A95F-C9C49D5AD089}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -429,6 +431,10 @@ type
procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String);
function GetPROCEDENCIA_CLIENTEIsNull: Boolean; function GetPROCEDENCIA_CLIENTEIsNull: Boolean;
procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean); procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean);
function GetVERIFACTUValue: SmallInt;
procedure SetVERIFACTUValue(const aValue: SmallInt);
function GetVERIFACTUIsNull: Boolean;
procedure SetVERIFACTUIsNull(const aValue: Boolean);
{ Properties } { Properties }
@ -542,6 +548,8 @@ type
property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull;
property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue; property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue;
property PROCEDENCIA_CLIENTEIsNull: Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; 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; end;
{ TFacturasClienteDataTableRules } { TFacturasClienteDataTableRules }
@ -770,6 +778,10 @@ type
procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual; procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual;
function GetPROCEDENCIA_CLIENTEIsNull: Boolean; virtual; function GetPROCEDENCIA_CLIENTEIsNull: Boolean; virtual;
procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: 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 } { Properties }
property ID: Integer read GetIDValue write SetIDValue; property ID: Integer read GetIDValue write SetIDValue;
@ -882,6 +894,8 @@ type
property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull;
property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue; property PROCEDENCIA_CLIENTE: String read GetPROCEDENCIA_CLIENTEValue write SetPROCEDENCIA_CLIENTEValue;
property PROCEDENCIA_CLIENTEIsNull: Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; 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 public
constructor Create(aDataTable: TDADataTable); override; constructor Create(aDataTable: TDADataTable); override;
@ -891,7 +905,7 @@ type
{ IFacturasCliente_Detalles } { IFacturasCliente_Detalles }
IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable)
['{14D5D2ED-02F4-44DC-899A-29119D36FD90}'] ['{3D8FF2B9-F029-413E-913C-13EEFF51E336}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -2290,6 +2304,27 @@ begin
DataTable.Fields[idx_FacturasClientePROCEDENCIA_CLIENTE].AsVariant := Null; DataTable.Fields[idx_FacturasClientePROCEDENCIA_CLIENTE].AsVariant := Null;
end; 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 } { TFacturasCliente_DetallesDataTableRules }
constructor TFacturasCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); constructor TFacturasCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable);

View File

@ -9,14 +9,14 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_ListaAnosFacturasDelta = '{BC4B775B-C16B-48D3-B40F-B9684CDD9839}'; RID_ListaAnosFacturasDelta = '{6532598B-1674-446B-ADA2-D250E745EC09}';
RID_FacturasClienteDelta = '{AAE0C12B-EEB0-41BD-9374-D2492F491485}'; RID_FacturasClienteDelta = '{3A243DCA-E97B-429B-9561-264578B839FF}';
RID_FacturasCliente_DetallesDelta = '{DEF2FAAB-FA4A-4478-B582-9F32D15AE44E}'; RID_FacturasCliente_DetallesDelta = '{841BC37D-B095-42F3-83B5-DFE3A61B8B44}';
type type
{ IListaAnosFacturasDelta } { IListaAnosFacturasDelta }
IListaAnosFacturasDelta = interface(IListaAnosFacturas) IListaAnosFacturasDelta = interface(IListaAnosFacturas)
['{BC4B775B-C16B-48D3-B40F-B9684CDD9839}'] ['{6532598B-1674-446B-ADA2-D250E745EC09}']
{ Property getters and setters } { Property getters and setters }
function GetOldANOValue : String; function GetOldANOValue : String;
@ -50,7 +50,7 @@ type
{ IFacturasClienteDelta } { IFacturasClienteDelta }
IFacturasClienteDelta = interface(IFacturasCliente) IFacturasClienteDelta = interface(IFacturasCliente)
['{AAE0C12B-EEB0-41BD-9374-D2492F491485}'] ['{3A243DCA-E97B-429B-9561-264578B839FF}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -107,6 +107,7 @@ type
function GetOldTIPO_FACTURAValue : String; function GetOldTIPO_FACTURAValue : String;
function GetOldLISTA_NOMBRESValue : String; function GetOldLISTA_NOMBRESValue : String;
function GetOldPROCEDENCIA_CLIENTEValue : String; function GetOldPROCEDENCIA_CLIENTEValue : String;
function GetOldVERIFACTUValue : SmallInt;
{ Properties } { Properties }
property OldID : Integer read GetOldIDValue; property OldID : Integer read GetOldIDValue;
@ -164,6 +165,7 @@ type
property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue; property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue;
property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue;
property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue; property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue;
property OldVERIFACTU : SmallInt read GetOldVERIFACTUValue;
end; end;
{ TFacturasClienteBusinessProcessorRules } { TFacturasClienteBusinessProcessorRules }
@ -502,6 +504,12 @@ type
function GetOldPROCEDENCIA_CLIENTEIsNull: Boolean; virtual; function GetOldPROCEDENCIA_CLIENTEIsNull: Boolean; virtual;
procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual; procedure SetPROCEDENCIA_CLIENTEValue(const aValue: String); virtual;
procedure SetPROCEDENCIA_CLIENTEIsNull(const aValue: Boolean); 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 } { Properties }
property ID : Integer read GetIDValue write SetIDValue; property ID : Integer read GetIDValue write SetIDValue;
@ -724,6 +732,10 @@ type
property PROCEDENCIA_CLIENTEIsNull : Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull; property PROCEDENCIA_CLIENTEIsNull : Boolean read GetPROCEDENCIA_CLIENTEIsNull write SetPROCEDENCIA_CLIENTEIsNull;
property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue; property OldPROCEDENCIA_CLIENTE : String read GetOldPROCEDENCIA_CLIENTEValue;
property OldPROCEDENCIA_CLIENTEIsNull : Boolean read GetOldPROCEDENCIA_CLIENTEIsNull; 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 public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override; constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@ -733,7 +745,7 @@ type
{ IFacturasCliente_DetallesDelta } { IFacturasCliente_DetallesDelta }
IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles)
['{DEF2FAAB-FA4A-4478-B582-9F32D15AE44E}'] ['{841BC37D-B095-42F3-83B5-DFE3A61B8B44}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer; function GetOldID_FACTURAValue : Integer;
@ -2693,6 +2705,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePROCEDENCIA_CLIENTE] := Null; BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePROCEDENCIA_CLIENTE] := Null;
end; 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 } { TFacturasCliente_DetallesBusinessProcessorRules }
constructor TFacturasCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TFacturasCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);

View File

@ -257,6 +257,7 @@ begin
SITUACION := CTE_PENDIENTE; SITUACION := CTE_PENDIENTE;
ID_CLIENTE := ID_NULO; ID_CLIENTE := ID_NULO;
SIN_COMISION := 0; SIN_COMISION := 0;
VERIFACTU := 0;
ID_FORMA_PAGO := AppFactuGES.EmpresaActiva.ID_FORMA_PAGO; ID_FORMA_PAGO := AppFactuGES.EmpresaActiva.ID_FORMA_PAGO;
ID_TIPO_IVA := AppFactuGES.EmpresaActiva.ID_TIPO_IVA; ID_TIPO_IVA := AppFactuGES.EmpresaActiva.ID_TIPO_IVA;

View File

@ -267,6 +267,10 @@ object srvFacturasCliente: TsrvFacturasCliente
item item
DatasetField = 'REF_FORMA_PAGO' DatasetField = 'REF_FORMA_PAGO'
TableField = 'REF_FORMA_PAGO' TableField = 'REF_FORMA_PAGO'
end
item
DatasetField = 'VERIFACTU'
TableField = 'VERIFACTU'
end> end>
end> end>
Name = 'FacturasCliente' Name = 'FacturasCliente'
@ -555,6 +559,10 @@ object srvFacturasCliente: TsrvFacturasCliente
Name = 'PROCEDENCIA_CLIENTE' Name = 'PROCEDENCIA_CLIENTE'
DataType = datString DataType = datString
Size = 255 Size = 255
end
item
Name = 'VERIFACTU'
DataType = datSmallInt
end> end>
end end
item item
@ -1343,6 +1351,11 @@ object srvFacturasCliente: TsrvFacturasCliente
Size = 255 Size = 255
Value = '' Value = ''
end end
item
Name = 'VERIFACTU'
DataType = datSmallInt
Value = ''
end
item item
Name = 'OLD_ID' Name = 'OLD_ID'
Value = '' Value = ''
@ -1369,7 +1382,7 @@ object srvFacturasCliente: TsrvFacturasCliente
'RAR_CONTABILIDAD = :IGNORAR_CONTABILIDAD,'#10' ID_TIENDA = :ID_TI' + 'RAR_CONTABILIDAD = :IGNORAR_CONTABILIDAD,'#10' ID_TIENDA = :ID_TI' +
'ENDA,'#10' ID_CONTRATO = :ID_CONTRATO,'#10' SIN_COMISION = :SIN_CO' + 'ENDA,'#10' ID_CONTRATO = :ID_CONTRATO,'#10' SIN_COMISION = :SIN_CO' +
'MISION,'#10' TIPO_FACTURA = :TIPO_FACTURA,'#10' SITUACION = :SITUA' + '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 StatementType = stSQL
ColumnMappings = <> ColumnMappings = <>
end> end>

View File

@ -2,8 +2,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
Caption = 'Lista de facturas de cliente' Caption = 'Lista de facturas de cliente'
ClientHeight = 666 ClientHeight = 666
ClientWidth = 640 ClientWidth = 640
ExplicitWidth = 648 ExplicitWidth = 656
ExplicitHeight = 700 ExplicitHeight = 704
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
inherited JvNavPanelHeader: TJvNavPanelHeader inherited JvNavPanelHeader: TJvNavPanelHeader
@ -66,7 +66,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
end end
end end
inherited tbxFiltro: TTBXToolbar inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 481 ExplicitWidth = 487
inherited lblAno: TTBXLabelItem inherited lblAno: TTBXLabelItem
Visible = True Visible = True
end end
@ -85,10 +85,10 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
ExplicitWidth = 640 ExplicitWidth = 640
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 481 Left = 487
Visible = True Visible = True
ExplicitLeft = 481 ExplicitLeft = 487
ExplicitWidth = 159 ExplicitWidth = 153
object TBXItem42: TTBXItem object TBXItem42: TTBXItem
Action = actCambiarSituacion Action = actCambiarSituacion
DisplayMode = nbdmImageAndText DisplayMode = nbdmImageAndText
@ -107,6 +107,12 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
Action = actInformes Action = actInformes
DisplayMode = nbdmImageAndText DisplayMode = nbdmImageAndText
end end
object TBSeparatorItem1: TTBSeparatorItem
end
object TBXItem46: TTBXItem
Action = actMandarVerifactu
DisplayMode = nbdmImageAndText
end
end end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar
@ -117,9 +123,9 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
end end
inline frViewFacturasCliente1: TfrViewFacturasCliente [3] inline frViewFacturasCliente1: TfrViewFacturasCliente [3]
Left = 0 Left = 0
Top = 102 Top = 105
Width = 640 Width = 640
Height = 545 Height = 542
Align = alClient Align = alClient
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@ -129,14 +135,14 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
ParentFont = False ParentFont = False
TabOrder = 3 TabOrder = 3
ReadOnly = False ReadOnly = False
ExplicitTop = 102 ExplicitTop = 105
ExplicitWidth = 640 ExplicitWidth = 640
ExplicitHeight = 545 ExplicitHeight = 542
inherited cxGrid: TcxGrid inherited cxGrid: TcxGrid
Width = 640 Width = 640
Height = 414 Height = 411
ExplicitWidth = 640 ExplicitWidth = 640
ExplicitHeight = 414 ExplicitHeight = 411
inherited cxGridView: TcxGridDBTableView inherited cxGridView: TcxGridDBTableView
DataController.Summary.DefaultGroupSummaryItems = < DataController.Summary.DefaultGroupSummaryItems = <
item item
@ -279,6 +285,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
end end
inherited TBXAlignmentPanel1: TTBXAlignmentPanel inherited TBXAlignmentPanel1: TTBXAlignmentPanel
Width = 640 Width = 640
ExplicitTop = 75
ExplicitWidth = 640 ExplicitWidth = 640
inherited tbxBotones: TTBXToolbar inherited tbxBotones: TTBXToolbar
Width = 630 Width = 630
@ -288,8 +295,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
end end
end end
inherited pnlAgrupaciones: TTBXDockablePanel inherited pnlAgrupaciones: TTBXDockablePanel
Top = 519 Top = 516
ExplicitTop = 519 ExplicitTop = 516
ExplicitWidth = 640 ExplicitWidth = 640
inherited TBXAlignmentPanel1: TTBXAlignmentPanel inherited TBXAlignmentPanel1: TTBXAlignmentPanel
Width = 640 Width = 640
@ -385,6 +392,12 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
OnExecute = actGenerarPDFExecute OnExecute = actGenerarPDFExecute
OnUpdate = actGenerarPDFUpdate OnUpdate = actGenerarPDFUpdate
end end
object actMandarVerifactu: TAction
Caption = 'Mandar Verifactu'
ImageIndex = 16
OnExecute = actMandarVerifactuExecute
OnUpdate = actMandarVerifactuUpdate
end
end end
inherited SmallImages: TPngImageList [5] inherited SmallImages: TPngImageList [5]
PngImages = < PngImages = <
@ -3608,39 +3621,40 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
000000180806000000E0773DF8000000017352474200AECE1CE9000000046741 000000180806000000E0773DF8000000017352474200AECE1CE9000000046741
4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000
80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000
0AE900000AE901FD75CED3000003F049444154484BBD557B6C53651C3D7DAD7B 0AE900000AE901FD75CED30000040449444154484BB5957B6C53551CC7BF7DAD
B0ADADC0363ADDA0834D2DDA6E5904A24C17E64864BAF8484C348E104940FD47 7BD0AD2D8F6D74BA413736B060BB65911165BA304702D3C54762A271844002EA
128D31121213134DD4C4F8644F794C6413188E81A003B3A15B8AC87C4CA39D9A 3F90608C9190989868A226C6277B0A38918DC7700CE431301BBAA5080C6510EC
685013515B36D8B3F7E7F9AEDCDAB9760F62BCC94D9ADEEF3BE7FCCE777EBFCF D444C32301B465833D7B7FFECEEDE96537ED3209F19B9CA4F79EDFEFF33DE7D7
2422F8DF9ED781A56D0EFB730D56945D0EA9BE3F2F676F3D70DF36C01C15FF0A DF391744F4BF0E9D3E07F25AEDD6F7EACD2895AFEE496A7E76E6AE3AE0C52D80
30AF333BB9E9E74ADF68E4A12A19A8F0851BADB869B6242F00292DD9AE6DBD2B 5133F80498D69191D878A5C23B127EA592FACBBDA106331E8BCC4EAD0F80A4E6
BD43273D4E79371D5A1DB05527B807B0BCE7C0FEC1EB20A3373A447B60B5688F 0CE7969E12CFE049B783BEB541A90536AB06CF03A6EFECD83BB00834F2A89D94
544BF0567FA8113393D45970F3C9E265FD7D371448E77C93746442DB6945B322 979792F25A15059EF4051B30B549AD098F9F2C9CD7D7FB482E75CC30507B1A94
D5099ACCD8F8DBD5D0467C90E1EB21178A6D3276979F247748B0A2385C6FC5EA ED66340953D5A0D188B5D7E74319F682861E06DD2EB4D0E8B33E36799A02E585
789550A1EBD02247DD57AB964DF4E4A7C9072E487B06B426139E55A2D51E9DE0 A13A33964A964EBC42E781D9F6DA0B4BE68D77E7A4D03127A82D154AA301EF8A
656051201B030A7C885584BC9073D740C2E55789B6799D0C54964CB1EB0D6065 458B18D5E06360B63F03FD023EC8BB087A4037168042650F92B27E25F55714C5
4F81EBC76FFDD9F2E17CE8E0B465BCC18C4763C544CF603B5074C68D5FFFBC16 94EB0BA0A43BD7F9E7AFBE0CFA7E0654389765ACDE880D324495F61F6C050ACE
C26AE49742C84F4B21677D193252532EC1B5A521E34C76D9CD0FF67B175CFCCC BA70ED9F8740BC1BBA9A0FFA2B0F74D99B4AC3D56514585E1C8C9AECB01AD7F4
931A056F4BC3700370FFBF2B9D94D02660455F2E060DF01F3C90E062C8371E8B 7966DE39E74ED6E0AD2918AA075E526113A4190835028B7BB3301085FFE10605
FC5EE593606569B8353D69F7803F2B12C8B546C10F109CA9B92D9E8D535A6087 E6802EB94D74B3D24B818AE2508B2DE1AB7E5F7AD89F65D6E0FB18CE5DB34262
05EBFADC1835C0BFCE837C7125E44C2EC94A72E4F4E264F928CB2427AE80BCEF 74D219086D336165AF0B2351F8C56CD02F0F80CE66F17351269D9E93483FA41B
841C9C8771567F6FA2B4C5EDB15D366CF8D48D8928B81B722A07D29305E95E80 E8C474D0510768FF348CF1EE5F90E9318A3110DA61C1EA332E8C6B7017E85426
28383D8FD0F387A78B72C2266E4EC29304D5782E71C10F5D4ACB4C7D92904075 A83B1DD435131A9C6B1EE69ABF2AD3E22AAE81505302DE64A83219FC80EC1619
E1DE64040254FE319577C5283F9209A1EF5A1DE34802D39C2BA0A7B6B7D3936A 3EA9263510A7705722FC7E86FFC8F0CE09F043696ADD95DA88812192115F710D
BFBC65B966801FA7E7C7E8F96182D31AD99F06D9930CAD16786A4E04044F6D77 B8A6966F6C0935E79F58A844E1C7197E84E10719CEA5A1BD29A09D89506A80B7
BB0E9CDB52239F143A75E5F1C05B52206FD9216F5A75922DB33A6482671E5B92 645A5CC518303CB9CDE5DC77636335FD94EF9814DE9C04FADA0AFAD2AC9A6C94
73E2E2E335F25DA57F0A382DFB638F1DE70DF09D3648A305B2DD840936DEA669 E931D219303CEDC8DCCC13775EAFA6DF2A7C31702ED9DF3BADB815856FB7801A
634ACFAD47721D1D639BAA24B47EAD742D344D52DE9A82610A287B0D286C34A3 4CA0AD068CF3C15B27313A69065C73F3A12C7BFBE8BA4A0AAE5A4E9DB30C3A78
7B87F56FF05A1384E0C2293AC66F35091BAD25DDF6F460758936B1A1424E79D2 4B12867801A59F01F90D46746D3347E0350610C3896FD1519EAB8ED0EE4A3368
A593AD7FD401E9C880EC4B458436AC3736B770CE10F431FE7741811BEF25128E B659DE1EA82A52C65797D329B78D3AF8001DB683DA53417B9211E632AC8A4472
A17F1E3D4554527E7655FEB8DCE993EF4BDD93C0555AEA4D783E5EF954EC2568 2CDF330CDDC4EF6E0B78744813BE86EE4A35E095945D5E923346CF78E9F76297
2F5F2D8668E455A0CA58AF139C2E5AD82FD5CBE5FC9A0239CE716B2867970A3B 0E2EBAA5CE80F765BC4E0CF330B4878732C168F853A05286440C4E17CCEAA3AA
BB4BA52AD121D2DA24126D25C9704C2543DCB3263A4DBBF39DAD91DBBD12C84B 85746B592E1DE7EB360AE7534A7CB23B4557C9F818716913D868339B0C4DD8C9
9904DE6CC7A0BAA1666A26F59D80C524E88BA924AC26AE5E418305777F5EE414 20E72C13F3AA41578EA325FC9487FCD9493A789315031C9CA792A610030B19DE
5E3AC20E95362A6752D48DB47936E0C69A97003B053DA3CE82E0115A55A613A8 1B35E111E251A21AD49BF0DCCF050EE28F8E38A1D4CA70EE14F1455A2FF3FF93
32391A7ADBD9400AFC9D5426C48CA3AA9BE74260ACA5652BF8BE18B548FDE0F5 3E02ACBCA077788C323CCCA52A550DC436F96AE869E31E17F0DDC9DC21461C16
E662F40E2BE5CC77880B965C0EF8B4F7818A1F6D7982F1DBF85F801B15FC059E A759E6DE93B8648B797C287EAB0642FC797372EB1D142BE7FE0E72C0DCC8CCFD
6028BEE22B69170000000049454E44AE426082} 49331012EDC7657983DB6FAD7C75DF2222FC0B51266D78E692E7220000000049
454E44AE426082}
Instruction.Text = 'Las siguientes facturas no han podido ser eliminadas:' Instruction.Text = 'Las siguientes facturas no han podido ser eliminadas:'
Instruction.Glyph.Data = { Instruction.Glyph.Data = {
0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
@ -4232,39 +4246,40 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
000000180806000000E0773DF8000000017352474200AECE1CE9000000046741 000000180806000000E0773DF8000000017352474200AECE1CE9000000046741
4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000
80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000
0AE900000AE901FD75CED3000003F049444154484BBD557B6C53651C3D7DAD7B 0AE900000AE901FD75CED30000040449444154484BB5957B6C53551CC7BF7DAD
B0ADADC0363ADDA0834D2DDA6E5904A24C17E64864BAF8484C348E104940FD47 7BD0AD2D8F6D74BA413736B060BB65911165BA304702D3C54762A271844002EA
128D31121213134DD4C4F8644F794C6413188E81A003B3A15B8AC87C4CA39D9A 3F90608C9190989868A226C6277B0A38918DC7700CE431301BBAA5080C6510EC
685013515B36D8B3F7E7F9AEDCDAB9760F62BCC94D9ADEEF3BE7FCCE777EBFCF D444C32301B465833D7B7FFECEEDE96537ED3209F19B9CA4F79EDFEFF33DE7D7
2422F8DF9ED781A56D0EFB730D56945D0EA9BE3F2F676F3D70DF36C01C15FF0A DF391744F4BF0E9D3E07F25AEDD6F7EACD2895AFEE496A7E76E6AE3AE0C52D80
30AF333BB9E9E74ADF68E4A12A19A8F0851BADB869B6242F00292DD9AE6DBD2B 5133F80498D69191D878A5C23B127EA592FACBBDA106331E8BCC4EAD0F80A4E6
BD43273D4E79371D5A1DB05527B807B0BCE7C0FEC1EB20A3373A447B60B5688F 0CE7969E12CFE049B783BEB541A90536AB06CF03A6EFECD83BB00834F2A89D94
544BF0567FA8113393D45970F3C9E265FD7D371448E77C93746442DB6945B322 979792F25A15059EF4051B30B549AD098F9F2C9CD7D7FB482E75CC30507B1A94
D5099ACCD8F8DBD5D0467C90E1EB21178A6D3276979F247748B0A2385C6FC5EA ED66340953D5A0D188B5D7E74319F682861E06DD2EB4D0E8B33E36799A02E585
789550A1EBD02247DD57AB964DF4E4A7C9072E487B06B426139E55A2D51E9DE0 A13A33964A964EBC42E781D9F6DA0B4BE68D77E7A4D03127A82D154AA301EF8A
656051201B030A7C885584BC9073D740C2E55789B6799D0C54964CB1EB0D6065 458B18D5E06360B63F03FD023EC8BB087A4037168042650F92B27E25F55714C5
4F81EBC76FFDD9F2E17CE8E0B465BCC18C4763C544CF603B5074C68D5FFFBC16 94EB0BA0A43BD7F9E7AFBE0CFA7E0654389765ACDE880D324495F61F6C050ACE
C26AE49742C84F4B21677D193252532EC1B5A521E34C76D9CD0FF67B175CFCCC BA70ED9F8740BC1BBA9A0FFA2B0F74D99B4AC3D56514585E1C8C9AECB01AD7F4
931A056F4BC3700370FFBF2B9D94D02660455F2E060DF01F3C90E062C8371E8B 7966DE39E74ED6E0AD2918AA075E526113A4190835028B7BB3301085FFE10605
FC5EE593606569B8353D69F7803F2B12C8B546C10F109CA9B92D9E8D535A6087 E6802EB94D74B3D24B818AE2508B2DE1AB7E5F7AD89F65D6E0FB18CE5DB34262
05EBFADC1835C0BFCE837C7125E44C2EC94A72E4F4E264F928CB2427AE80BCEF 74D219086D336165AF0B2351F8C56CD02F0F80CE66F17351269D9E93483FA41B
841C9C8771567F6FA2B4C5EDB15D366CF8D48D8928B81B722A07D29305E95E80 E8C474D0510768FF348CF1EE5F90E9318A3110DA61C1EA332E8C6B7017E85426
28383D8FD0F387A78B72C2266E4EC29304D5782E71C10F5D4ACB4C7D92904075 A83B1DD435131A9C6B1EE69ABF2AD3E22AAE81505302DE64A83219FC80EC1619
E1DE64040254FE319577C5283F9209A1EF5A1DE34802D39C2BA0A7B6B7D3936A 3EA9263510A7705722FC7E86FFC8F0CE09F043696ADD95DA88812192115F710D
BFBC65B966801FA7E7C7E8F96182D31AD99F06D9930CAD16786A4E04044F6D77 B8A6966F6C0935E79F58A844E1C7197E84E10719CEA5A1BD29A09D89506A80B7
BB0E9CDB52239F143A75E5F1C05B52206FD9216F5A75922DB33A6482671E5B92 645A5CC518303CB9CDE5DC77636335FD94EF9814DE9C04FADA0AFAD2AC9A6C94
73E2E2E335F25DA57F0A382DFB638F1DE70DF09D3648A305B2DD840936DEA669 E931D219303CEDC8DCCC13775EAFA6DF2A7C31702ED9DF3BADB815856FB7801A
634ACFAD47721D1D639BAA24B47EAD742D344D52DE9A82610A287B0D286C34A3 4CA0AD068CF3C15B27313A69065C73F3A12C7BFBE8BA4A0AAE5A4E9DB30C3A78
7B87F56FF05A1384E0C2293AC66F35091BAD25DDF6F460758936B1A1424E79D2 4B12867801A59F01F90D46746D3347E0350610C3896FD1519EAB8ED0EE4A3368
A593AD7FD401E9C880EC4B458436AC3736B770CE10F431FE7741811BEF25128E B659DE1EA82A52C65797D329B78D3AF8001DB683DA53417B9211E632AC8A4472
A17F1E3D4554527E7655FEB8DCE993EF4BDD93C0555AEA4D783E5EF954EC2568 2CDF330CDDC4EF6E0B78744813BE86EE4A35E095945D5E923346CF78E9F76297
2F5F2D8668E455A0CA58AF139C2E5AD82FD5CBE5FC9A0239CE716B2867970A3B 0E2EBAA5CE80F765BC4E0CF330B4878732C168F853A05286440C4E17CCEAA3AA
BB4BA52AD121D2DA24126D25C9704C2543DCB3263A4DBBF39DAD91DBBD12C84B 85746B592E1DE7EB360AE7534A7CB23B4557C9F818716913D868339B0C4DD8C9
9904DE6CC7A0BAA1666A26F59D80C524E88BA924AC26AE5E418305777F5EE414 20E72C13F3AA41578EA325FC9487FCD9493A789315031C9CA792A610030B19DE
5E3AC20E95362A6752D48DB47936E0C69A97003B053DA3CE82E0115A55A613A8 1B35E111E251A21AD49BF0DCCF050EE28F8E38A1D4CA70EE14F1455A2FF3FF93
32391A7ADBD9400AFC9D5426C48CA3AA9BE74260ACA5652BF8BE18B548FDE0F5 3E02ACBCA077788C323CCCA52A550DC436F96AE869E31E17F0DDC9DC21461C16
E662F40E2BE5CC77880B965C0EF8B4F7818A1F6D7982F1DBF85F801B15FC059E A759E6DE93B8648B797C287EAB0642FC797372EB1D142BE7FE0E72C0DCC8CCFD
6028BEE22B69170000000049454E44AE426082} 49331012EDC7657983DB6FAD7C75DF2222FC0B51266D78E692E7220000000049
454E44AE426082}
Instruction.Text = 'Las siguientes facturas no han podido ser modificadas:' Instruction.Text = 'Las siguientes facturas no han podido ser modificadas:'
Instruction.Glyph.Data = { Instruction.Glyph.Data = {
0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00

View File

@ -47,6 +47,9 @@ type
TBXItem44: TTBXItem; TBXItem44: TTBXItem;
actGenerarPDF: TAction; actGenerarPDF: TAction;
TBXItem45: TTBXItem; TBXItem45: TTBXItem;
actMandarVerifactu: TAction;
TBXItem46: TTBXItem;
TBSeparatorItem1: TTBSeparatorItem;
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject);
procedure actNuevaFacturaExecute(Sender: TObject); procedure actNuevaFacturaExecute(Sender: TObject);
@ -62,6 +65,8 @@ type
procedure actVerContratoExecute(Sender: TObject); procedure actVerContratoExecute(Sender: TObject);
procedure actGenerarPDFExecute(Sender: TObject); procedure actGenerarPDFExecute(Sender: TObject);
procedure actGenerarPDFUpdate(Sender: TObject); procedure actGenerarPDFUpdate(Sender: TObject);
procedure actMandarVerifactuExecute(Sender: TObject);
procedure actMandarVerifactuUpdate(Sender: TObject);
private private
FFacturas: IBizFacturaCliente; FFacturas: IBizFacturaCliente;
@ -304,6 +309,83 @@ begin
end; 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); procedure TfEditorFacturasCliente.actNuevaFacturaExecute(Sender: TObject);
begin begin
actNuevo.Execute; actNuevo.Execute;

View File

@ -196,6 +196,20 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente
Caption = 'Forma pago' Caption = 'Forma pago'
DataBinding.FieldName = 'REF_FORMA_PAGO' DataBinding.FieldName = 'REF_FORMA_PAGO'
end 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 end
inherited cxGridLevel: TcxGridLevel inherited cxGridLevel: TcxGridLevel
Caption = 'Todas' Caption = 'Todas'
@ -223,8 +237,6 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente
StyleDisabled.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = ''
ExplicitWidth = 273
Width = 273
end end
inherited edtFechaIniFiltro: TcxDateEdit inherited edtFechaIniFiltro: TcxDateEdit
Style.LookAndFeel.SkinName = '' Style.LookAndFeel.SkinName = ''
@ -263,15 +275,13 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente
StyleHot.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = ''
end end
inherited txtFiltroTodo2: TcxTextEdit inherited txtFiltroTodo2: TcxTextEdit
Left = 445 Left = 444
Enabled = True Enabled = True
Style.LookAndFeel.SkinName = '' Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = ''
ExplicitLeft = 445 ExplicitLeft = 444
ExplicitWidth = 275
Width = 275
end end
inherited dxLayoutControl1Group_Root: TdxLayoutGroup inherited dxLayoutControl1Group_Root: TdxLayoutGroup
inherited dxLayoutControl1Group3: TdxLayoutGroup inherited dxLayoutControl1Group3: TdxLayoutGroup
@ -284,6 +294,7 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente
end end
inherited TBXAlignmentPanel1: TTBXAlignmentPanel inherited TBXAlignmentPanel1: TTBXAlignmentPanel
Width = 802 Width = 802
ExplicitTop = 75
ExplicitWidth = 802 ExplicitWidth = 802
inherited tbxBotones: TTBXToolbar inherited tbxBotones: TTBXToolbar
Width = 792 Width = 792

View File

@ -68,6 +68,7 @@ type
cxGridViewLOPD: TcxGridDBColumn; cxGridViewLOPD: TcxGridDBColumn;
cxGridViewPROCEDENCIA_CLIENTE: TcxGridDBColumn; cxGridViewPROCEDENCIA_CLIENTE: TcxGridDBColumn;
cxGridViewREF_FORMA_PAGO: TcxGridDBColumn; cxGridViewREF_FORMA_PAGO: TcxGridDBColumn;
cxGridViewVERIFACTU: TcxGridDBColumn;
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
out AStyle: TcxStyle); out AStyle: TcxStyle);

View File

@ -28,7 +28,7 @@
<Borland.Personality>Delphi.Personality</Borland.Personality> <Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType/> <Borland.ProjectType/>
<BorlandProject> <BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">3</VersionInfo><VersionInfo Name="Release">3</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.3.3.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES v2(Servidor)</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">2.3.3.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">viernes, 14 de marzo de 2025 16:56</VersionInfoKeys></VersionInfoKeys><Excluded_Packages> <BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">3</VersionInfo><VersionInfo Name="Release">4</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.3.4.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES v2(Servidor)</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">2.3.4.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">viernes, 14 de marzo de 2025 18:44</VersionInfoKeys></VersionInfoKeys><Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl">File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found</Excluded_Packages> <Excluded_Packages Name="C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl">File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found</Excluded_Packages>
</Excluded_Packages><Source><Source Name="MainSource">FactuGES_Server.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject> </Excluded_Packages><Source><Source Name="MainSource">FactuGES_Server.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
</ProjectExtensions> </ProjectExtensions>