Presupuestos de cliente -> Generación de certificados de trabajos para los presupuestos aceptados. Se generan como fichero DOC.

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@508 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2008-08-06 18:18:27 +00:00
parent 8cdd7b3947
commit 5d2c1aab9a
25 changed files with 2791 additions and 398 deletions

View File

@ -53,57 +53,57 @@
<DelphiCompile Include="Base.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="..\Modulos\Articulos\adortl.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxDataD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxEditorsD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxExportD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxExtEditorsD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxGridD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxIntl6D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxIntlPrintSys3D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxLibraryD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\cxPageControlD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\DataAbstract_Core_D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\dbrtl.dcp" />
<DCCReference Include="..\Modulos\Articulos\dclIndyCore.dcp" />
<DCCReference Include="..\Modulos\Articulos\designide.dcp" />
<DCCReference Include="..\Modulos\Articulos\dsnap.dcp" />
<DCCReference Include="..\Modulos\Articulos\dxGDIPlusD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\dxPSCoreD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\dxThemeD11.dcp" />
<DCCReference Include="..\Modulos\Articulos\GUISDK_D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\IndyCore.dcp" />
<DCCReference Include="..\Modulos\Articulos\IndyProtocols.dcp" />
<DCCReference Include="..\Modulos\Articulos\IndySystem.dcp" />
<DCCReference Include="..\Modulos\Articulos\Jcl.dcp" />
<DCCReference Include="..\Modulos\Articulos\JclVcl.dcp" />
<DCCReference Include="..\Modulos\Articulos\JSDialog100.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvCmpD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvCoreD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvCtrlsD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvDlgsD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvMMD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvNetD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvPageCompsD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvStdCtrlsD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\JvSystemD11R.dcp" />
<DCCReference Include="..\Modulos\Articulos\pckMD5.dcp" />
<DCCReference Include="..\Modulos\Articulos\pckUCDataConnector.dcp" />
<DCCReference Include="..\Modulos\Articulos\pckUserControl_RT.dcp" />
<DCCReference Include="..\Modulos\Articulos\PngComponentsD10.dcp" />
<DCCReference Include="..\Modulos\Articulos\PNG_D10.dcp" />
<DCCReference Include="..\Modulos\Articulos\RemObjects_Core_D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\RemObjects_Indy_D11.dcp" />
<DCCReference Include="..\Modulos\Articulos\rtl.dcp" />
<DCCReference Include="..\Modulos\Articulos\TB2k_D10.dcp" />
<DCCReference Include="..\Modulos\Articulos\tbx_d10.dcp" />
<DCCReference Include="..\Modulos\Articulos\vcl.dcp" />
<DCCReference Include="..\Modulos\Articulos\vclactnband.dcp" />
<DCCReference Include="..\Modulos\Articulos\vcldb.dcp" />
<DCCReference Include="..\Modulos\Articulos\vcljpg.dcp" />
<DCCReference Include="..\Modulos\Articulos\VclSmp.dcp" />
<DCCReference Include="..\Modulos\Articulos\vclx.dcp" />
<DCCReference Include="..\Modulos\Articulos\xmlrtl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\adortl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxDataD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxEditorsD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxExportD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxExtEditorsD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxGridD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxIntl6D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxIntlPrintSys3D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxLibraryD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\cxPageControlD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\DataAbstract_Core_D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dbrtl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dclIndyCore.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\designide.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dsnap.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dxGDIPlusD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dxPSCoreD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\dxThemeD11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\GUISDK_D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\IndyCore.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\IndyProtocols.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\IndySystem.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\Jcl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JclVcl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JSDialog100.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvCmpD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvCoreD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvCtrlsD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvDlgsD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvMMD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvNetD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvPageCompsD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvStdCtrlsD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\JvSystemD11R.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\pckMD5.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\pckUCDataConnector.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\pckUserControl_RT.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\PngComponentsD10.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\PNG_D10.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\RemObjects_Core_D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\RemObjects_Indy_D11.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\rtl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\TB2k_D10.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\tbx_d10.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\vcl.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\vclactnband.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\vcldb.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\vcljpg.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\VclSmp.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\vclx.dcp" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Controller\xmlrtl.dcp" />
<DCCReference Include="..\Servicios\FactuGES_Intf.pas" />
<DCCReference Include="Conexion\uConfigurarConexion.pas">
<Form>fConfigurarConexion</Form>

Binary file not shown.

View File

@ -42,13 +42,16 @@ procedure CopiarFichero(const Origen, Destino: string);
procedure DoDelTree( TheDir : String);
procedure Deltree(DirToKill : String; KillChoosenDir : Boolean);
function GetSpecialFolderPath(folder : integer) : string;
function PreguntarRuta(const ATitulo: String; const AComentario: String; var ARuta: String): Boolean;
function EscapeIllegalChars(AFileName: string): string;
implementation
uses
SysUtils, Windows, Dialogs, JclFileUtils,
Messages, Classes, Graphics, Controls, Forms,
StdCtrls, SHFolder;
StdCtrls, SHFolder, cxShellBrowserDialog,
cxLookAndFeels;
function GetSpecialFolderPath(folder : integer) : string;
@ -281,5 +284,40 @@ begin
end;
end.
function PreguntarRuta(const ATitulo: String; const AComentario: String; var ARuta: String): Boolean;
var
cxShellBrowserDialog1: TcxShellBrowserDialog;
begin
cxShellBrowserDialog1 := TcxShellBrowserDialog.Create(NIL);
try
with cxShellBrowserDialog1 do
begin
Name := 'cxShellBrowserDialog1';
FolderLabelCaption := AComentario;
LookAndFeel.NativeStyle := True;
LookAndFeel.Kind := lfStandard;
Title := ATitulo;
Result := cxShellBrowserDialog1.Execute;
ARuta := cxShellBrowserDialog1.Path;
end;
finally
FreeANDNIL(cxShellBrowserDialog1);
end;
end;
function EscapeIllegalChars(AFileName: string): string;
var
x: integer;
const
IllegalCharSet: set of char =
['|','<','>','\','^','+','=','?','/','[',']','"',';',',','*'];
begin
for x := 1 to Length(AFileName) do
if AFileName[x] in IllegalCharSet then
AFileName[x] := '_';
Result := AFileName;
end;
end.

View File

@ -54,7 +54,19 @@
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
<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">1</VersionInfo><VersionInfo Name="MinorVer">2</VersionInfo><VersionInfo Name="Release">0</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">1.2.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.2.0.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">1</VersionInfo><VersionInfo Name="MinorVer">2</VersionInfo><VersionInfo Name="Release">1</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">1.2.1.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.2.1.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Excluded_Packages>

Binary file not shown.

Binary file not shown.

View File

@ -50,6 +50,7 @@ type
procedure Preview(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false);
procedure Print(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false);
function GenerarCertificados(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false): Boolean;
end;
TPresupuestosClienteController = class(TObservador, IPresupuestosClienteController)
@ -110,6 +111,7 @@ type
procedure Preview(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false);
procedure Print(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false);
function GenerarCertificados(APresupuesto : IBizPresupuestoCliente; AllItems: Boolean = false): Boolean;
end;
implementation
@ -120,7 +122,8 @@ uses
uBizContactos, uDataTableUtils, uDataModuleUsuarios, Classes, uFactuGES_App,
schPresupuestosClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorPresupuestoCliente,
uIEditorElegirPresupuestosCliente, uIEditorDireccionEntregaPresupuestoCliente,
schContactosClient_Intf, uPresupuestosClienteReportController;
schContactosClient_Intf, uPresupuestosClienteReportController,
uSistemaFunc;
{ TPresupuestosClienteController }
@ -799,6 +802,66 @@ begin
end;
end;
function TPresupuestosClienteController.GenerarCertificados(
APresupuesto: IBizPresupuestoCliente; AllItems: Boolean): Boolean;
var
AReportController : IPresupuestosClienteReportController;
ID_Presupuestos: TStringList;
AFile : String;
ATitulo : String;
AComentario : String;
ARuta : String;
function _GenerarCertificado: Boolean;
var
AFile: string;
begin
AFile := ARuta + PathDelim + EscapeIllegalChars(APresupuesto.REFERENCIA + '.doc');
Result := AReportController.GenerarCertificados(APresupuesto.ID, AFile);
end;
begin
Result := False;
AReportController := TPresupuestosClienteReportController.Create;
ID_Presupuestos := TStringList.Create;
try
//Si deseamos imprimimos todos los items del objeto presupuesto
if AllItems then
begin
ATitulo := 'Generar certificados de trabajos en PDF';
AComentario := 'Indique la carpeta donde se guardarán los certificados' + #13#10 + 'Se generarán como ficheros PDF.';
end
else begin
ATitulo := 'Generar certificado de trabajo en PDF';
AComentario := 'Indique la carpeta donde se guardará el certificado.' + #13#10 + 'Se generará como fichero PDF.';
end;
if PreguntarRuta(ATitulo, AComentario, ARuta) then
begin
if AllItems then
begin
APresupuesto.DataTable.First;
while not APresupuesto.DataTable.EOF do
begin
if (APresupuesto.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO) then
_GenerarCertificado;
APresupuesto.DataTable.Next;
end;
end
else begin
if (APresupuesto.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO) then
_GenerarCertificado;
end;
Result := True;
end;
finally
AReportController := NIL;
FreeANDNIL(ID_Presupuestos);
end;
end;
function TPresupuestosClienteController.GetClienteController: IClientesController;
begin
Result := FClienteController;
@ -809,5 +872,6 @@ begin
Result := FDetallesController;
end;
end.

View File

@ -9,10 +9,11 @@ uses
type
IPresupuestosClienteReportController = interface(IControllerBase)
['{D0686358-251C-43C4-9927-6112F2F4D3B8}']
['{41AE4B36-6114-4DDE-8BCF-288AA0E12449}']
procedure Preview(const AListaID : String);
procedure Print(const AListaID : String);
function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean;
function GenerarCertificados(const AID: Integer; const AFileName : String): Boolean;
end;
TPresupuestosClienteReportController = class(TControllerBase, IPresupuestosClienteReportController)
@ -26,6 +27,7 @@ type
procedure Preview(const AListaID : String);
procedure Print(const AListaID : String);
function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean;
function GenerarCertificados(const AID: Integer; const AFileName : String): Boolean;
end;
@ -80,6 +82,31 @@ begin
end;
end;
function TPresupuestosClienteReportController.GenerarCertificados(
const AID: Integer; const AFileName : String): Boolean;
var
AStream: Binary;
AFile : String;
begin
Result := False;
AFile := AFileName;
if EsCadenaVacia(AFile) and (not DarFicheroWordExportar(AFile)) then
Exit;
ShowHourglassCursor;
try
AStream := FDataModule.GetRptWordCertificadoTrabajos(AID);
try
AStream.SaveToFile(AFile);
Result := True;
finally
FreeAndNil(AStream);
end;
finally
HideHourglassCursor;
end;
end;
procedure TPresupuestosClienteReportController.Preview(const AListaID : String);
var
AStream: Binary;

View File

@ -38,6 +38,7 @@ type
// Report
function GetRptPresupuestos(const AListaID: String): Binary;
function GetRptWordPresupuesto(const AID: Integer): Binary;
function GetRptWordCertificadoTrabajos(const AID: Integer): Binary;
end;
implementation
@ -66,6 +67,12 @@ begin
Result := (RORemoteService as IsrvPresupuestosCliente).GenerateReport(AListaID)
end;
function TDataModulePresupuestosCliente.GetRptWordCertificadoTrabajos(
const AID: Integer): Binary;
begin
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarCertificadoTrabajosEnWord(AID)
end;
function TDataModulePresupuestosCliente.GetRptWordPresupuesto(
const AID: Integer): Binary;
begin

View File

@ -10,6 +10,7 @@ type
['{70CEBB06-376F-4363-B80F-DDA4324E0F85}']
function GetRptPresupuestos(const AListaID: String): Binary;
function GetRptWordPresupuesto(const AID: Integer): Binary;
function GetRptWordCertificadoTrabajos(const AID: Integer): Binary;
end;
implementation

View File

@ -0,0 +1,563 @@
object RptWordCertificadoTrabajo: TRptWordCertificadoTrabajo
OldCreateOrder = False
OnCreate = DataModuleCreate
Height = 218
Width = 374
object schReport: TDASchema
ConnectionManager = dmServer.ConnectionManager
DataDictionary = DataDictionary
Datasets = <
item
Params = <
item
Name = 'ID'
Value = '31'
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
SQL =
'SELECT'#10' V_PRESUPUESTOS_CLIENTE.ID, V_PRESUPUESTOS_CLIENTE.ID_' +
'EMPRESA,'#10' V_PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO,'#10' V_PRE' +
'SUPUESTOS_CLIENTE.REFERENCIA,'#10' V_PRESUPUESTOS_CLIENTE.PORTADA' +
','#10' V_PRESUPUESTOS_CLIENTE.MEMORIA, V_PRESUPUESTOS_CLIENTE.OBS' +
'ERVACIONES,'#10' V_PRESUPUESTOS_CLIENTE.IMPORTE_NETO, V_PRESUPUES' +
'TOS_CLIENTE.IMPORTE_PORTE,'#10' V_PRESUPUESTOS_CLIENTE.DESCUENTO,' +
' V_PRESUPUESTOS_CLIENTE.IMPORTE_DESCUENTO,'#10' V_PRESUPUESTOS_CL' +
'IENTE.BASE_IMPONIBLE, V_PRESUPUESTOS_CLIENTE.IVA,'#10' V_PRESUPUE' +
'STOS_CLIENTE.ID_CLIENTE,'#10' V_PRESUPUESTOS_CLIENTE.REFERENCIA_C' +
'LIENTE,'#10' V_PRESUPUESTOS_CLIENTE.CLIENTE_FINAL,'#10' V_CLIENTES' +
'.NIF_CIF, V_CLIENTES.NOMBRE,'#10' V_PRESUPUESTOS_CLIENTE.IMPORTE_' +
'IVA, V_PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL,'#10' V_CLIENTES.PERSON' +
'A_CONTACTO, V_CLIENTES.CALLE, V_CLIENTES.POBLACION,'#10' V_CLIENT' +
'ES.PROVINCIA, V_CLIENTES.CODIGO_POSTAL'#10'FROM'#10' V_PRESUPUESTOS_C' +
'LIENTE INNER JOIN V_CLIENTES ON'#10' (V_PRESUPUESTOS_CLIENTE.' +
'ID_CLIENTE = V_CLIENTES.ID)'#10' WHERE V_PRESUPUESTOS_CLIENTE.ID = ' +
':ID'#10
StatementType = stSQL
ColumnMappings = <
item
DatasetField = 'ID'
TableField = 'ID'
end
item
DatasetField = 'ID_EMPRESA'
TableField = 'ID_EMPRESA'
end
item
DatasetField = 'FECHA_PRESUPUESTO'
TableField = 'FECHA_PRESUPUESTO'
end
item
DatasetField = 'REFERENCIA'
TableField = 'REFERENCIA'
end
item
DatasetField = 'PORTADA'
TableField = 'PORTADA'
end
item
DatasetField = 'MEMORIA'
TableField = 'MEMORIA'
end
item
DatasetField = 'OBSERVACIONES'
TableField = 'OBSERVACIONES'
end
item
DatasetField = 'IMPORTE_NETO'
TableField = 'IMPORTE_NETO'
end
item
DatasetField = 'IMPORTE_PORTE'
TableField = 'IMPORTE_PORTE'
end
item
DatasetField = 'DESCUENTO'
TableField = 'DESCUENTO'
end
item
DatasetField = 'IMPORTE_DESCUENTO'
TableField = 'IMPORTE_DESCUENTO'
end
item
DatasetField = 'BASE_IMPONIBLE'
TableField = 'BASE_IMPONIBLE'
end
item
DatasetField = 'IVA'
TableField = 'IVA'
end
item
DatasetField = 'ID_CLIENTE'
TableField = 'ID_CLIENTE'
end
item
DatasetField = 'REFERENCIA_CLIENTE'
TableField = 'REFERENCIA_CLIENTE'
end
item
DatasetField = 'CLIENTE_FINAL'
TableField = 'CLIENTE_FINAL'
end
item
DatasetField = 'NIF_CIF'
TableField = 'NIF_CIF'
end
item
DatasetField = 'NOMBRE'
TableField = 'NOMBRE'
end
item
DatasetField = 'IMPORTE_IVA'
TableField = 'IMPORTE_IVA'
end
item
DatasetField = 'IMPORTE_TOTAL'
TableField = 'IMPORTE_TOTAL'
end
item
DatasetField = 'PERSONA_CONTACTO'
TableField = 'PERSONA_CONTACTO'
end
item
DatasetField = 'CALLE'
TableField = 'CALLE'
end
item
DatasetField = 'POBLACION'
TableField = 'POBLACION'
end
item
DatasetField = 'PROVINCIA'
TableField = 'PROVINCIA'
end
item
DatasetField = 'CODIGO_POSTAL'
TableField = 'CODIGO_POSTAL'
end>
end>
Name = 'Informe_Cabecera'
Fields = <
item
Name = 'ID'
DataType = datInteger
Required = True
InPrimaryKey = True
end
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'FECHA_PRESUPUESTO'
DataType = datDateTime
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'PORTADA'
DataType = datMemo
end
item
Name = 'MEMORIA'
DataType = datMemo
end
item
Name = 'OBSERVACIONES'
DataType = datMemo
end
item
Name = 'IMPORTE_NETO'
DataType = datCurrency
end
item
Name = 'IMPORTE_PORTE'
DataType = datCurrency
end
item
Name = 'DESCUENTO'
DataType = datFloat
end
item
Name = 'IMPORTE_DESCUENTO'
DataType = datCurrency
end
item
Name = 'BASE_IMPONIBLE'
DataType = datCurrency
end
item
Name = 'IVA'
DataType = datFloat
end
item
Name = 'ID_CLIENTE'
DataType = datInteger
end
item
Name = 'REFERENCIA_CLIENTE'
DataType = datString
Size = 255
end
item
Name = 'CLIENTE_FINAL'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF'
DataType = datString
Size = 15
end
item
Name = 'NOMBRE'
DataType = datString
Size = 255
end
item
Name = 'IMPORTE_IVA'
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end
item
Name = 'PERSONA_CONTACTO'
DataType = datString
Size = 255
end
item
Name = 'CALLE'
DataType = datString
Size = 255
end
item
Name = 'POBLACION'
DataType = datString
Size = 255
end
item
Name = 'PROVINCIA'
DataType = datString
Size = 255
end
item
Name = 'CODIGO_POSTAL'
DataType = datString
Size = 10
end>
ReadOnly = True
end
item
Params = <
item
Name = 'ID_PRESUPUESTO'
DataType = datInteger
Value = '12'
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
ConnectionType = 'Interbase'
Default = True
SQL =
'SELECT * FROM PRO_PRES_CAPITULOS(:ID_PRESUPUESTO)'#10'WHERE (VISIBLE' +
' <> 0) AND {where}'#10'ORDER BY ID_PRESUPUESTO, POSICION'#10
StatementType = stSQL
ColumnMappings = <
item
DatasetField = 'ID'
TableField = 'ID'
end
item
DatasetField = 'ID_PRESUPUESTO'
TableField = 'ID_PRESUPUESTO'
end
item
DatasetField = 'POSICION'
TableField = 'POSICION'
end
item
DatasetField = 'TIPO_DETALLE'
TableField = 'TIPO_DETALLE'
end
item
DatasetField = 'CONCEPTO'
TableField = 'CONCEPTO'
end
item
DatasetField = 'IMPORTE_TOTAL'
TableField = 'IMPORTE_TOTAL'
end
item
DatasetField = 'VISIBLE'
TableField = 'VISIBLE'
end>
end>
Name = 'Informe_Capitulos'
Fields = <
item
Name = 'ID'
DataType = datInteger
InPrimaryKey = True
end
item
Name = 'ID_PRESUPUESTO'
DataType = datInteger
end
item
Name = 'POSICION'
DataType = datInteger
end
item
Name = 'TIPO_DETALLE'
DataType = datString
Size = 10
end
item
Name = 'CONCEPTO'
DataType = datString
Size = 2000
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end
item
Name = 'VISIBLE'
DataType = datSmallInt
end>
ReadOnly = True
end>
JoinDataTables = <>
UnionDataTables = <>
Commands = <>
RelationShips = <>
UpdateRules = <>
Version = 0
Left = 48
Top = 16
end
object DataDictionary: TDADataDictionary
Fields = <>
Left = 46
Top = 142
end
object DABin2DataStreamer: TDABin2DataStreamer
Left = 48
Top = 80
end
object tbl_Cabecera: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID'
DataType = datInteger
Required = True
InPrimaryKey = True
end
item
Name = 'ID_EMPRESA'
DataType = datInteger
end
item
Name = 'FECHA_PRESUPUESTO'
DataType = datDateTime
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
end
item
Name = 'PORTADA'
DataType = datMemo
end
item
Name = 'MEMORIA'
DataType = datMemo
end
item
Name = 'OBSERVACIONES'
DataType = datMemo
end
item
Name = 'IMPORTE_NETO'
DataType = datCurrency
end
item
Name = 'IMPORTE_PORTE'
DataType = datCurrency
end
item
Name = 'DESCUENTO'
DataType = datFloat
end
item
Name = 'IMPORTE_DESCUENTO'
DataType = datCurrency
end
item
Name = 'BASE_IMPONIBLE'
DataType = datCurrency
end
item
Name = 'IVA'
DataType = datFloat
end
item
Name = 'ID_CLIENTE'
DataType = datInteger
end
item
Name = 'REFERENCIA_CLIENTE'
DataType = datString
Size = 255
end
item
Name = 'CLIENTE_FINAL'
DataType = datString
Size = 255
end
item
Name = 'NIF_CIF'
DataType = datString
Size = 15
end
item
Name = 'NOMBRE'
DataType = datString
Size = 255
end
item
Name = 'IMPORTE_IVA'
DataType = datCurrency
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end
item
Name = 'PERSONA_CONTACTO'
DataType = datString
Size = 255
end
item
Name = 'CALLE'
DataType = datString
Size = 255
end
item
Name = 'POBLACION'
DataType = datString
Size = 255
end
item
Name = 'PROVINCIA'
DataType = datString
Size = 255
end
item
Name = 'CODIGO_POSTAL'
DataType = datString
Size = 10
end>
Params = <
item
Name = 'ID'
Value = '31'
ParamType = daptInput
end>
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
LocalSchema = schReport
LocalDataStreamer = DABin2DataStreamer
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'Informe_Cabecera'
IndexDefs = <>
Left = 168
Top = 16
end
object tbl_Capitulos: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID'
DataType = datInteger
InPrimaryKey = True
end
item
Name = 'ID_PRESUPUESTO'
DataType = datInteger
end
item
Name = 'POSICION'
DataType = datInteger
end
item
Name = 'TIPO_DETALLE'
DataType = datString
Size = 10
end
item
Name = 'CONCEPTO'
DataType = datString
Size = 2000
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end
item
Name = 'VISIBLE'
DataType = datSmallInt
end>
Params = <
item
Name = 'ID_PRESUPUESTO'
Value = '12'
ParamType = daptInput
end>
MasterParamsMappings.Strings = (
'ID_PRESUPUESTO=ID_PRESUPUESTO')
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
LocalSchema = schReport
LocalDataStreamer = DABin2DataStreamer
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'Informe_Capitulos'
IndexDefs = <>
Left = 264
Top = 16
end
object tbl_Empresa: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <>
Params = <
item
Name = 'ID'
Value = '31'
ParamType = daptInput
end>
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'Empresa'
IndexDefs = <>
Left = 168
Top = 80
end
end

View File

@ -0,0 +1,212 @@
unit uRptWordCertificadoTrabajo_Server;
interface
uses
SysUtils, Classes, AHWord97, IB, IBCustomDataSet, IBDatabase,
Word2000,
uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, uDAClasses,
uDAScriptingProvider, uDADataTable, uDAMemDataTable;
type
TCapitulo = record
Tipo : string;
Nombre : string;
Total : double;
end;
TRptWordCertificadoTrabajo = class(TDataModule)
DABin2DataStreamer: TDABin2DataStreamer;
tbl_Cabecera: TDAMemDataTable;
tbl_Capitulos: TDAMemDataTable;
tbl_Empresa: TDAMemDataTable;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
FImportes : Boolean;
FDesBonificacion : Variant;
FImpBonificacion : Double;
FPlantilla : string;
FWordApp : TWordApp;
FDocumento : TWordDoc;
FNumCapitulos : Integer;
FNumCapOpc : Integer;
FContadorCap : Integer;
FCodigoPresupuesto : Integer;
FNombreFichero : String;
ListaCapitulos : array[1..1000] of TCapitulo;
function Generar : Boolean;
function RellenarInforme : boolean; virtual;
procedure _GenerarCertificado(const AID : Integer);
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
function Exportar(const AIDPresupuesto: Integer; const AFichero : String): Boolean;
end;
implementation
{$R *.dfm}
uses
Windows, Variants, Dialogs, uDataModuleServer, uStringsUtils, uSistemaFunc,
srvEmpresas_Impl, uROTypes, uROClasses;
const
rptInforme = 'CertificadoTrabajos.rdx';
constructor TRptWordCertificadoTrabajo.Create(AOwner: TComponent);
begin
inherited;
FDocumento := NIL;
FImportes := True;
FNumCapitulos := 0;
FPlantilla := DarRutaInformes + rptInforme;
end;
procedure TRptWordCertificadoTrabajo.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
end;
destructor TRptWordCertificadoTrabajo.Destroy;
begin
if FDocumento <> NIL then
FDocumento.Free;
FDocumento := NIL;
inherited;
end;
function TRptWordCertificadoTrabajo.Exportar(const AIDPresupuesto: Integer;
const AFichero : String): Boolean;
begin
if EsCadenaVacia(AFichero) then
begin
Result := False;
RaiseError('Falta indicar el fichero donde se exportará el listado.');
end;
FNombreFichero := AFichero;
FCodigoPresupuesto := AIDPresupuesto;
_GenerarCertificado(AIDPresupuesto);
Result := True;
end;
function TRptWordCertificadoTrabajo.Generar : Boolean;
begin
FWordApp := TWordApp.Create (False, False);
with FWordApp do
begin
Visible := False;
ScreenUpdating := False;
end;
FDocumento := TWordDoc.CreateNewDoc(FWordApp, FPlantilla);
FWordApp.ScreenUpdating := False;
try
if not RellenarInforme then
RaiseError('Se producido un error al generar el informe en MS Word.');
FDocumento.SaveAs(FNombreFichero);
Result := True;
finally
FDocumento.CloseDoc(wdDoNotSaveChanges);
FDocumento := NIL;
FWordApp.CloseApp(wdDoNotSaveChanges);
FWordApp := NIL;
end;
end;
function TRptWordCertificadoTrabajo.RellenarInforme: boolean;
var
NombreCapitulo : String;
Estilo : OleVariant;
ADescripcion : String;
begin
with FDocumento, tbl_Cabecera do
begin
ReplaceBookmark('Cliente', FieldByName('NOMBRE').AsString);
ReplaceBookmark('Direccion', FieldByName('CALLE').AsString + ' ' +
FieldByName('CODIGO_POSTAL').AsString + ' ' +
FieldByName('POBLACION').AsString + ' ' + FieldByName('PROVINCIA').AsString);
ADescripcion := FieldByName('REFERENCIA').AsString;
end;
FContadorCap := 0;
FNumCapOpc := 0;
with FDocumento, tbl_Capitulos do
begin
First;
while not Eof do
begin
if (FieldByName('TIPO_DETALLE').AsString = 'Titulo') or
(FieldByName('TIPO_DETALLE').AsString = 'Opcional') then
begin
NombreCapitulo := '';
if (FieldByName('TIPO_DETALLE').AsString = 'Titulo') then
NombreCapitulo := 'Capítulo ' + IntToStr(FContadorCap + 1) + '. ' + FieldByName('CONCEPTO').AsString
else begin
NombreCapitulo := 'Capítulo opcional. ' + FieldByName('CONCEPTO').AsString;
Inc(FNumCapOpc);
end;
ADescripcion := ADescripcion + #13#10 + NombreCapitulo;
Inc(FContadorCap);
ListaCapitulos[FContadorCap].Tipo := FieldByName('TIPO_DETALLE').AsString;
ListaCapitulos[FContadorCap].Nombre := NombreCapitulo;
Next;
end
else begin
if FContadorCap = 0 then
begin
Inc(FContadorCap); // Se considera el conjunto de conceptos sueltos como un capítulo.
{ Pegar una tabla para rellenarla }
end;
Next;
end;
end;
FNumCapitulos := FContadorCap;
ReplaceBookmark('Descripcion', ADescripcion);
end;
Result := True;
end;
procedure TRptWordCertificadoTrabajo._GenerarCertificado(const AID: Integer);
var
ACopiaPlantilla: string;
begin
tbl_Cabecera.ParamByName('ID').AsInteger := AID;
tbl_Capitulos.ParamByName('ID_PRESUPUESTO').AsInteger := AID;
tbl_Cabecera.Active := True;
tbl_Capitulos.Active := True;
FCodigoPresupuesto := AID;
if RecuperarEmpresa(tbl_Cabecera.FieldByName('ID_EMPRESA').AsInteger, tbl_Empresa) then
begin
ACopiaPlantilla := DarFicheroTemporal;
CopiarFichero(FPlantilla, ACopiaPlantilla);
FPlantilla := ACopiaPlantilla;
try
Generar;
finally
SysUtils.DeleteFile(ACopiaPlantilla);
end;
end;
end;
end.

View File

@ -35,6 +35,7 @@ type
{ IsrvPresupuestosCliente methods }
function GenerateReport(const ListaID: String): Binary;
function GenerateReportEnWord(const ID: Integer): Binary;
function GenerarCertificadoTrabajosEnWord(const ID: Integer): Binary;
end;
implementation
@ -45,7 +46,8 @@ uses
{Generated:} FactuGES_Invk, uDataModuleServer, uDatabaseUtils,
schPresupuestosClienteClient_Intf, uRestriccionesUsuarioUtils,
uRptPresupuestosCliente_Server,
uBizPresupuestosClienteServer, uRptWordPresupuestoCliente;
uBizPresupuestosClienteServer, uRptWordPresupuestoCliente,
uRptWordCertificadoTrabajo_Server;
procedure Create_srvPresupuestosCliente(out anInstance : IUnknown);
begin
@ -78,6 +80,26 @@ begin
ConnectionName := dmServer.ConnectionName;
end;
function TsrvPresupuestosCliente.GenerarCertificadoTrabajosEnWord(
const ID: Integer): Binary;
var
AReportGenerator : TRptWordCertificadoTrabajo;
AFicheroTMP : TFileName;
begin
Result := NIL;
AFicheroTMP := DarFicheroTemporal;
AReportGenerator := TRptWordCertificadoTrabajo.Create(nil);
try
if AReportGenerator.Exportar(ID, AFicheroTMP) then
begin
Result := Binary.Create;
Result.LoadFromFile(AFicheroTMP);
end;
finally
FreeAndNIL(AReportGenerator);
end;
end;
function TsrvPresupuestosCliente.GenerateReport(const ListaID: String): Binary;
var
AReportGenerator : TRptPresupuestosCliente;

View File

@ -16,7 +16,8 @@ uses
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uIEditorPresupuestoCliente, uBizPresupuestosCliente, uViewPresupuestoCliente,
uViewDetallesDTO, uViewDetallesArticulos, uViewDetallesPresupuestoCliente,
uDAInterfaces, cxRichEdit, cxDBRichEdit, JvGIF, uViewRichEditor, cxPC;
uDAInterfaces, cxRichEdit, cxDBRichEdit, JvGIF, uViewRichEditor, cxPC,
uViewDetallesArticulosParaVenta;
type
TfEditorPresupuestoCliente = class(TfEditorDBItem, IEditorPresupuestoCliente)
@ -35,12 +36,19 @@ type
frViewRichEditor1: TfrViewRichEditor;
frViewRichEditor2: TfrViewRichEditor;
frViewDetallesPresupuestoCliente1: TfrViewDetallesPresupuestoCliente;
actGenerarCertificado: TAction;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem7: TTBXItem;
TBXSeparatorItem6: TTBXSeparatorItem;
TBXItem33: TTBXItem;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure pgPaginasChange(Sender: TObject);
procedure actGenerarCertificadoExecute(Sender: TObject);
procedure actGenerarCertificadoUpdate(Sender: TObject);
private
procedure RecalcularPortePorUnidad;
@ -92,6 +100,20 @@ uses
{
**************************** TfEditorPresupuestoCliente ****************************
}
procedure TfEditorPresupuestoCliente.actGenerarCertificadoExecute(
Sender: TObject);
begin
FController.GenerarCertificados(Presupuesto, False)
end;
procedure TfEditorPresupuestoCliente.actGenerarCertificadoUpdate(
Sender: TObject);
begin
(Sender as TAction).Enabled := HayDatos and
(FPresupuesto.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO);
end;
procedure TfEditorPresupuestoCliente.AsignarVista;
var
AViewPresupuestoCliente: TfrViewPresupuestoCliente;

View File

@ -138,11 +138,18 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente
end
object TBXSeparatorItem17: TTBXSeparatorItem
end
object TBXItem41: TTBXItem
Action = actGenerarCertificado
end
end
end
inherited TBXTMain2: TTBXToolbar
Visible = True
ExplicitWidth = 117
ExplicitWidth = 236
object TBXItem42: TTBXItem
Action = actGenerarCertificado
DisplayMode = nbdmImageAndText
end
object TBXItem40: TTBXItem
Action = actGenerar
DisplayMode = nbdmImageAndText
@ -185,6 +192,13 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente
OnExecute = actGenerarExecute
OnUpdate = actGenerarUpdate
end
object actGenerarCertificado: TAction
Category = 'Acciones'
Caption = 'Generar certificado'
ImageIndex = 26
OnExecute = actGenerarCertificadoExecute
OnUpdate = actGenerarCertificadoUpdate
end
end
inherited SmallImages: TPngImageList
PngImages = <
@ -1865,10 +1879,13 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente
inherited dsDataTable: TDADataSource [8]
end
inherited GridPopupMenu: TPopupMenu
object Generar2: TMenuItem [6]
object Generarcertificado1: TMenuItem [6]
Action = actGenerarCertificado
end
object Generar2: TMenuItem [7]
Action = actGenerar
end
object N4: TMenuItem [7]
object N4: TMenuItem [8]
Caption = '-'
end
end

View File

@ -31,6 +31,10 @@ type
JsImprimirDialog: TJSDialog;
TBXItem40: TTBXItem;
JsListaPresupuestosNoEliminados: TJSDialog;
actGenerarCertificado: TAction;
TBXItem41: TTBXItem;
TBXItem42: TTBXItem;
Generarcertificado1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure actGenerarAlbaranCliExecute(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
@ -39,6 +43,8 @@ type
procedure actGenerarPresupuestoProvExecute(Sender: TObject);
procedure actGenerarExecute(Sender: TObject);
procedure actGenerarUpdate(Sender: TObject);
procedure actGenerarCertificadoUpdate(Sender: TObject);
procedure actGenerarCertificadoExecute(Sender: TObject);
protected
FPresupuestos: IBizPresupuestoCliente;
@ -99,6 +105,39 @@ begin
GenerarAlbaranCli(FPresupuestos.ID);
end;
procedure TfEditorPresupuestosCliente.actGenerarCertificadoExecute(
Sender: TObject);
var
APresupuestos: IBizPresupuestoCliente;
AllItems: Boolean;
begin
APresupuestos := Nil;
AllItems := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
if AllItems then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
end
else
APresupuestos := Presupuestos;
if Assigned(APresupuestos) then
FController.GenerarCertificados(APresupuestos, AllItems)
end;
procedure TfEditorPresupuestosCliente.actGenerarCertificadoUpdate(
Sender: TObject);
begin
(Sender as TAction).Enabled := HayDatos
and ViewGrid.EsSeleccionCeldaDatos
and (FPresupuestos.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO);
end;
procedure TfEditorPresupuestosCliente.actGenerarExecute(Sender: TObject);
//var
// Respuesta : Integer;

View File

@ -298,6 +298,14 @@
</Parameter>
</Parameters>
</Operation>
<Operation Name="GenerarCertificadoTrabajosEnWord" UID="{F96E1E6B-131C-4F1F-BF2A-3E7B0B6ABF09}">
<Parameters>
<Parameter Name="Result" DataType="Binary" Flag="Result">
</Parameter>
<Parameter Name="ID" DataType="Integer" Flag="In" >
</Parameter>
</Parameters>
</Operation>
</Operations>
</Interface>
</Interfaces>

View File

@ -502,6 +502,7 @@ type
['{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}']
function GenerateReport(const ListaID: String): Binary;
function GenerateReportEnWord(const ID: Integer): Binary;
function GenerarCertificadoTrabajosEnWord(const ID: Integer): Binary;
end;
{ CosrvPresupuestosCliente }
@ -516,6 +517,7 @@ type
function GenerateReport(const ListaID: String): Binary;
function GenerateReportEnWord(const ID: Integer): Binary;
function GenerarCertificadoTrabajosEnWord(const ID: Integer): Binary;
end;
{ IsrvPedidosProveedor }
@ -1499,6 +1501,23 @@ begin
end
end;
function TsrvPresupuestosCliente_Proxy.GenerarCertificadoTrabajosEnWord(const ID: Integer): Binary;
begin
try
result := nil;
__Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarCertificadoTrabajosEnWord');
__Message.Write('ID', TypeInfo(Integer), ID, []);
__Message.Finalize;
__TransportChannel.Dispatch(__Message);
__Message.Read('Result', TypeInfo(Binary), result, []);
finally
__Message.UnsetAttributes(__TransportChannel);
__Message.FreeStream;
end
end;
{ CosrvPedidosProveedor }
class function CosrvPedidosProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor;

View File

@ -150,6 +150,7 @@ type
published
procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
procedure Invoke_GenerateReportEnWord(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
procedure Invoke_GenerarCertificadoTrabajosEnWord(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
end;
TsrvPedidosProveedor_Invoker = class(TDataAbstractService_Invoker)
@ -691,6 +692,34 @@ begin
end;
end;
procedure TsrvPresupuestosCliente_Invoker.Invoke_GenerarCertificadoTrabajosEnWord(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
{ function GenerarCertificadoTrabajosEnWord(const ID: Integer): Binary; }
var
ID: Integer;
lResult: Binary;
__lObjectDisposer: TROObjectDisposer;
begin
lResult := nil;
try
__Message.Read('ID', TypeInfo(Integer), ID, []);
lResult := (__Instance as IsrvPresupuestosCliente).GenerarCertificadoTrabajosEnWord(ID);
__Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvPresupuestosCliente', 'GenerarCertificadoTrabajosEnWordResponse');
__Message.Write('Result', TypeInfo(Binary), lResult, []);
__Message.Finalize;
__Message.UnsetAttributes(__Transport);
finally
__lObjectDisposer := TROObjectDisposer.Create(__Instance);
try
__lObjectDisposer.Add(lResult);
finally
__lObjectDisposer.Free();
end;
end;
end;
{ TsrvPedidosProveedor_Invoker }
procedure TsrvPedidosProveedor_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);

Binary file not shown.

Binary file not shown.

View File

@ -48,7 +48,6 @@ uses
srvFacturasCliente_Impl in '..\Modulos\Facturas de cliente\Servidor\srvFacturasCliente_Impl.pas' {srvFacturasCliente: TDataAbstractService},
schFormasPagoClient_Intf in '..\Modulos\Formas de pago\Model\schFormasPagoClient_Intf.pas',
schFormasPagoServer_Intf in '..\Modulos\Formas de pago\Model\schFormasPagoServer_Intf.pas',
uRptPresupuestosCliente_Server in '..\Modulos\Presupuestos de cliente\Reports\uRptPresupuestosCliente_Server.pas' {RptPresupuestosCliente},
schRecibosClienteClient_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteClient_Intf.pas',
schRecibosClienteServer_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteServer_Intf.pas',
srvRecibosProveedor_Impl in '..\Modulos\Recibos de proveedor\Servidor\srvRecibosProveedor_Impl.pas' {srvRecibosProveedor: TDataAbstractService},
@ -81,7 +80,7 @@ uses
uStringsUtils in '..\Base\Utiles\uStringsUtils.pas',
FactuGES_Intf in '..\Servicios\FactuGES_Intf.pas',
FactuGES_Invk in '..\Servicios\FactuGES_Invk.pas',
uRptWordPresupuestoCliente in '..\Modulos\Presupuestos de cliente\Reports\uRptWordPresupuestoCliente.pas' {RptWordPresupuestoCliente: TDataModule},
uRptWordCertificadoTrabajo_Server in '..\Modulos\Presupuestos de cliente\Reports\uRptWordCertificadoTrabajo_Server.pas' {RptWordCertificadoTrabajo: TDataModule},
AHWord97 in 'Utiles\AHWord97.pas',
uSistemaFunc in '..\Base\Utiles\uSistemaFunc.pas',
uRptWordAlbaranCliente in '..\Modulos\Albaranes de cliente\Reports\uRptWordAlbaranCliente.pas' {RptWordAlbaranCliente: TDataModule},
@ -127,7 +126,9 @@ uses
schAlbaranesProveedorClient_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorClient_Intf.pas',
schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas',
schArticulosClient_Intf in '..\Modulos\Articulos\Model\schArticulosClient_Intf.pas',
schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas';
schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas',
uRptPresupuestosCliente_Server in '..\Modulos\Presupuestos de cliente\Reports\uRptPresupuestosCliente_Server.pas' {RptPresupuestosCliente: TDataModule},
uRptWordPresupuestoCliente in '..\Modulos\Presupuestos de cliente\Reports\uRptWordPresupuestoCliente.pas' {RptWordPresupuestoCliente: TDataModule};
{$R *.res}
{$R ..\Servicios\RODLFile.res}

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}</ProjectGuid>
@ -35,7 +35,7 @@
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType />
<BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters><Parameters Name="RunParams">/standalone</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">2</VersionInfo><VersionInfo Name="Release">0</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"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.2.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.2.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">miércoles, 30 de julio de 2008 12:48</VersionInfoKeys></VersionInfoKeys><Excluded_Packages/><Source><Source Name="MainSource">FactuGES_Server.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters><Parameters Name="RunParams">/standalone</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">2</VersionInfo><VersionInfo Name="Release">1</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"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.2.1.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.2.1.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">miércoles, 06 de agosto de 2008 17:51</VersionInfoKeys></VersionInfoKeys><Excluded_Packages /><Source><Source Name="MainSource">FactuGES_Server.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
</ProjectExtensions>
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
<ItemGroup>
@ -180,6 +180,11 @@
<DCCReference Include="..\Modulos\Presupuestos de cliente\Model\uBizPresupuestosClienteServer.pas" />
<DCCReference Include="..\Modulos\Presupuestos de cliente\Reports\uRptPresupuestosCliente_Server.pas">
<Form>RptPresupuestosCliente</Form>
<DesignClass>TDataModule</DesignClass>
</DCCReference>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Reports\uRptWordCertificadoTrabajo_Server.pas">
<Form>RptWordCertificadoTrabajo</Form>
<DesignClass>TDataModule</DesignClass>
</DCCReference>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Reports\uRptWordPresupuestoCliente.pas">
<Form>RptWordPresupuestoCliente</Form>

View File

@ -14,7 +14,7 @@ BEGIN
BEGIN
VALUE "FileVersion", "1.2.0.0\0"
VALUE "ProductVersion", "1.2.0.0\0"
VALUE "CompileDate", "lunes, 04 de agosto de 2008 15:56\0"
VALUE "CompileDate", "miércoles, 06 de agosto de 2008 17:51\0"
END
END
BLOCK "VarFileInfo"