Tecsitel_FactuGES2/Source/Modulos/Banca electronica/Controller/uBancaElectronicaController.pas

214 lines
6.5 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2007. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión:
Versión actual: 1.0.0
Fecha versión actual:
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit uBancaElectronicaController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase;
type
IBancaElectronicaController = interface(IControllerBase)
['{9E37DF46-D02C-47C4-BCBE-414FB97A7751}']
procedure GenerarFicheroNorma19 (const IDRemesa : Integer);
end;
TBancaElectronicaController = class(TControllerBase, IBancaElectronicaController)
private
function DarParametrosParaExportar(var Entidad : Integer; var Oficina : Integer;
var AFechaCargo : TDateTime; var AFileName : String): Boolean;
public
procedure GenerarFicheroNorma19 (const IDRemesa : Integer);
end;
implementation
uses
cxControls, Controls, Windows,
CVBNorma1958CSB,
uEditorRegistryUtils,
uBizEmpresas, uEmpresasController,
uBizContactos, uClientesController,
uBizRemesasCliente, uRemesasClienteController, schRemesasClienteClient_Intf,
schRecibosClienteClient_Intf, Dialogs,
uIEditorExportacionNorma19;
{ TBancaElectronicaController }
procedure TBancaElectronicaController.GenerarFicheroNorma19(
const IDRemesa: Integer);
var
ARemesasController : IRemesasClienteController;
AEmpresasController : IEmpresasController;
AClientesController : IClientesController;
ARemesa : IBizRemesaCliente;
AEmpresa : IBizEmpresa;
ACliente : IBizCliente;
ANorma19 : TCVBNorma1958CSB;
I: integer;
AEntidad : Integer;
AOficina : Integer;
begin
ARemesasController := TRemesasClienteController.Create;
AEmpresasController := TEmpresasController.Create;
AClientesController := TClientesController.Create;
ANorma19 := TCVBNorma1958CSB.Create(NIL);
try
ARemesa := ARemesasController.Buscar(IDRemesa);
ARemesa.DataTable.Active := True;
ARemesasController.RecuperarRecibos(ARemesa);
if ARemesa.ID <> IDRemesa then
raise Exception.CreateFmt('No existe la remesa con ID %d', [IDRemesa]);
AEmpresa := AEmpresasController.Buscar(ARemesa.ID_EMPRESA);
AEmpresa.DataTable.Active := True;
if AEmpresa.ID <> ARemesa.ID_EMPRESA then
raise Exception.CreateFmt('No existe la empresa con ID %d', [ARemesa.ID_EMPRESA]);
ANorma19.FNomFic := 'REM' + ARemesa.REFERENCIA + '.C19';
ANorma19.FecAbono := ARemesa.FECHA_REMESA;
if not DarParametrosParaExportar(AEntidad, AOficina, ANorma19.FecAbono, ANorma19.FNomFic) then
Exit;
ANorma19.EntRecepPres := IntToStr(AEntidad);
ANorma19.OfiRecepPres := IntToStr(AOficina);
with ANorma19 do
begin
_NORMA_ := 19;
Procedimiento := prPrimero; // <= ????????????????????????????????????
Euros := True;
Depura := True;
Abrir;
FecCargo := Now; // <= Fecha de generación del fichero
//FecVcto := ARemesa.FECHA_REMESA; // <= sólo para norma 58
// PRESENTADOR
Presentador := AEmpresa.NIF_CIF;
SufijoPres := ARemesa.SUFIJO_N19;
NomCliPres := AEmpresa.NOMBRE;
CompCabecera;
// el que cobra
Ordenante := AEmpresa.NIF_CIF;
SufijoOrd:= ARemesa.SUFIJO_N19;
NomCliOrd:= AEmpresa.NOMBRE;
EntOrde:= ARemesa.ENTIDAD;
OfiOrde:= ARemesa.SUCURSAL;
DcOrde:= ARemesa.DC;
CcOrde:= ARemesa.CUENTA;
LocalidadOrd:= '';
CodLocalOrd:= '';
//FecOrigFormCred:= <= Sólo para norma 58
CompOrdenante;
ARemesa.Recibos.DataTable.First;
for I := 0 to (ARemesa.Recibos.DataTable.RecordCount - 1) do
begin
ACliente := (AClientesController.Buscar(ARemesa.Recibos.ID_CLIENTE) as IBizCliente);
ACliente.DataTable.Active := True;
// el que paga
Referencia := ACliente.REFERENCIA;
NomTitDom := ARemesa.Recibos.NOMBRE_CLIENTE;
// EntTitDom := ARemesa.Recibos.ENTIDAD_CLIENTE;
// OfiTitDom := ARemesa.Recibos.SUCURSAL_CLIENTE;
// DcTitDom := ARemesa.Recibos.DC_CLIENTE;
// CcTitDom := ARemesa.Recibos.CUENTA_CLIENTE;
NomTitCta := ARemesa.Recibos.NOMBRE_CLIENTE;
DomTitCta := '';
PlzTitCta := '';
CPtTitCta := '';
CampConc1 := 'Recibo ' + ARemesa.Recibos.REFERENCIA;
fImporteEu := ARemesa.Recibos.IMPORTE_TOTAL;
CompRegistro;
ARemesa.Recibos.DataTable.Next;
end;
FinOrdenan;
Cerrar;
end;
finally
ARemesasController := NIL;
AEmpresasController := NIL;
AClientesController := NIL;
AEmpresa := NIL;
FreeAndNil(ANorma19);
end;
end;
function TBancaElectronicaController.DarParametrosParaExportar (
var Entidad : Integer; var Oficina : Integer; var AFechaCargo : TDateTime;
var AFileName : String): Boolean;
var
AEditor : IEditorExportacionNorma19;
begin
Result := False;
AEditor := NIL;
ShowHourglassCursor;
try
CreateEditor('EditorExportacionNorma19', IEditorExportacionNorma19, AEditor);
if Assigned(AEditor) then
with AEditor do
begin
CodigoEntidad := Entidad;
CodigoAgencia := Oficina;
FechaCargo := AFechaCargo;
Fichero := AFileName;
if (ShowModal = mrOk) then
begin
Entidad := CodigoEntidad;
Oficina := CodigoAgencia;
AFechaCargo := FechaCargo;
AFileName := Fichero;
Result := True;
end;
Release;
end;
finally
AEditor := NIL;
HideHourglassCursor;
end;
end;
end.