git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@2 c93665c3-c93d-084d-9b98-7d5f4a9c3376
445 lines
14 KiB
ObjectPascal
445 lines
14 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 uOscAddressBookController;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, uDADataTable, uControllerBase,
|
|
|
|
// Descomentar esto si hay detalles
|
|
// uDetallesController,
|
|
|
|
uBizOscAddressBook, uIDataModuleTiendaWeb;
|
|
|
|
type
|
|
IOscAddressBookController = interface(IObservador)
|
|
['{0768DF4D-50C1-4C16-9C14-8B09DDECF1CB}']
|
|
procedure AsignarID(AOscAddressBook: IBizOscAddressBook; IDCabecera: Integer; AEsNuevo:Boolean);
|
|
function Localizar(AOscAddressBook: IBizOscAddressBook; AIDLocal : Integer): Boolean;
|
|
|
|
{ procedure Anadir(AOscAddressBook : IBizOscAddressBook);
|
|
function Eliminar(AOscAddressBook : IBizOscAddressBook): Boolean; overload;
|
|
function Guardar(AOscAddressBook : IBizOscAddressBook): Boolean;
|
|
procedure DescartarCambios(AOscAddressBook : IBizOscAddressBook);
|
|
function Duplicar(AOscAddressBook: IBizOscAddressBook): IBizOscAddressBook;
|
|
|
|
function Buscar(const ID: Integer): IBizOscAddressBook;
|
|
function BuscarTodos: IBizOscAddressBook;
|
|
procedure VerTodos(AOscAddressBook: IBizOscAddressBook);
|
|
procedure Ver(AOscAddressBook: IBizOscAddressBook);
|
|
function Localizar(AOscAddressBook: IBizOscAddressBook; ADescripcion:String): Boolean;
|
|
function DarListaOscAddressBook: TStringList;
|
|
function ExtraerSeleccionados(AOscAddressBook: IBizOscAddressBook) : IBizOscAddressBook;
|
|
function ElegirOscAddressBook(AOscAddressBook: IBizOscAddressBook; AMensaje: String; AMultiSelect: Boolean): IBizOscAddressBook;}
|
|
|
|
// Descomentar esto si hay informe
|
|
// procedure Preview(AOscAddressBook : IBizOscAddressBook);
|
|
// procedure Print(AOscAddressBook : IBizOscAddressBook);
|
|
end;
|
|
|
|
TOscAddressBookController = class(TObservador, IOscAddressBookController)
|
|
protected
|
|
FDataModule : IDataModuleTiendaWeb;
|
|
|
|
// Descomentar esto si hay detalles
|
|
// FDetallesController : IOscAddressBookDetallesController;
|
|
|
|
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
|
|
function _Vacio : IBizOscAddressBook;
|
|
|
|
function ValidarOscAddressBook(AOscAddressBook: IBizOscAddressBook): Boolean;
|
|
procedure AsignarDataModule;
|
|
procedure AsignarID(AOscAddressBook: IBizOscAddressBook; IDCabecera: Integer; AEsNuevo:Boolean);
|
|
public
|
|
constructor Create; virtual;
|
|
destructor Destroy; override;
|
|
|
|
procedure Anadir(AOscAddressBook : IBizOscAddressBook);
|
|
function Eliminar(AOscAddressBook : IBizOscAddressBook): Boolean; overload;
|
|
function Guardar(AOscAddressBook : IBizOscAddressBook): Boolean;
|
|
procedure DescartarCambios(AOscAddressBook : IBizOscAddressBook);
|
|
function Duplicar(AOscAddressBook: IBizOscAddressBook): IBizOscAddressBook;
|
|
|
|
function Buscar(const ID: Integer): IBizOscAddressBook;
|
|
function BuscarTodos: IBizOscAddressBook;
|
|
procedure VerTodos(AOscAddressBook: IBizOscAddressBook);
|
|
procedure Ver(AOscAddressBook: IBizOscAddressBook);
|
|
function Localizar(AOscAddressBook: IBizOscAddressBook; AIDLocal : Integer): Boolean;
|
|
function ExtraerSeleccionados(AOscAddressBook: IBizOscAddressBook) : IBizOscAddressBook;
|
|
function ElegirOscAddressBook(AOscAddressBook: IBizOscAddressBook; AMensaje: String; AMultiSelect: Boolean): IBizOscAddressBook;
|
|
|
|
// Descomentar esto si hay informe
|
|
// procedure Preview(AOscAddressBook : IBizOscAddressBook);
|
|
// procedure Print(AOscAddressBook : IBizOscAddressBook);
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
cxControls, DB, uEditorRegistryUtils,
|
|
uDAInterfaces, uDataTableUtils,
|
|
uDateUtils, uROTypes, DateUtils, Controls, Windows,
|
|
|
|
// Descomentar esto si hay informe
|
|
// uOscAddressBookReportController,
|
|
|
|
schTiendaWebClient_Intf, uDataModuleTiendaWeb;
|
|
|
|
{ TOscAddressBookController }
|
|
|
|
procedure TOscAddressBookController.Anadir(AOscAddressBook: IBizOscAddressBook);
|
|
begin
|
|
AOscAddressBook.Insert;
|
|
end;
|
|
|
|
procedure TOscAddressBookController.AsignarDataModule;
|
|
begin
|
|
FDataModule := TDataModuleTiendaWeb.Create(Nil);
|
|
end;
|
|
|
|
procedure TOscAddressBookController.AsignarID(AOscAddressBook: IBizOscAddressBook;
|
|
IDCabecera: Integer; AEsNuevo:Boolean);
|
|
begin
|
|
if not Assigned(AOscAddressBook) then
|
|
raise Exception.Create ('AddressBook no asignado');
|
|
|
|
if AOscAddressBook.EsNuevo then
|
|
begin
|
|
AOscAddressBook.Edit;
|
|
AOscAddressBook.customers_id := IDCabecera;
|
|
AOscAddressBook.Post;
|
|
end;
|
|
end;
|
|
|
|
function TOscAddressBookController.BuscarTodos: IBizOscAddressBook;
|
|
begin
|
|
// Result := FDataModule.Get_
|
|
end;
|
|
|
|
constructor TOscAddressBookController.Create;
|
|
begin
|
|
AsignarDataModule;
|
|
|
|
// Descomentar esto si hay detalles
|
|
// FDetallesController := TDetallesController.Create;
|
|
end;
|
|
|
|
function TOscAddressBookController.Buscar(const ID: Integer): IBizOscAddressBook;
|
|
begin
|
|
// Result := (FDataModule as IDataModuleTiendaWeb).GetItem(ID);
|
|
end;
|
|
|
|
function TOscAddressBookController._Vacio: IBizOscAddressBook;
|
|
begin
|
|
Result := Buscar(ID_NULO);
|
|
end;
|
|
|
|
procedure TOscAddressBookController.DescartarCambios(AOscAddressBook: IBizOscAddressBook);
|
|
begin
|
|
if not Assigned(AOscAddressBook) then
|
|
raise Exception.Create ('AddressBook no asignado');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
if (AOscAddressBook.State in dsEditModes) then
|
|
AOscAddressBook.Cancel;
|
|
|
|
AOscAddressBook.DataTable.CancelUpdates;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
destructor TOscAddressBookController.Destroy;
|
|
begin
|
|
FDataModule := NIL;
|
|
|
|
// Descomentar esto si hay detalles
|
|
// FDetallesController := NIL;
|
|
|
|
inherited;
|
|
end;
|
|
|
|
|
|
function TOscAddressBookController.Duplicar(AOscAddressBook: IBizOscAddressBook): IBizOscAddressBook;
|
|
begin
|
|
Result := Self._Vacio;
|
|
ShowHourglassCursor;
|
|
try
|
|
DuplicarRegistros(AOscAddressBook.DataTable, Result.DataTable, mdrActual);
|
|
|
|
// Descomentar esto si hay detalles
|
|
// DuplicarRegistros(AOscAddressBook.Detalles.DataTable, Result.Detalles.DataTable, mdrTodos);
|
|
|
|
// ¡CUIDADO! Hay que dejar algunos campos como si fuera todo nuevo
|
|
Result.Edit;
|
|
with Result do
|
|
begin
|
|
// Ejemplos
|
|
// ID_EMPRESA := dmUsuarios.IDEmpresaActual;
|
|
// USUARIO := dmUsuarios.LoginInfo.Usuario;
|
|
// REFERENCIA := ''; //Para que se asigne una nueva
|
|
// FECHA_FACTURA := DateOf(Now);
|
|
// SITUACION := SITUACION_PENDIENTE;
|
|
end;
|
|
|
|
Result.Post;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TOscAddressBookController.ValidarOscAddressBook(AOscAddressBook: IBizOscAddressBook): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(AOscAddressBook) then
|
|
raise Exception.Create ('OscAddressBook no asignado');
|
|
|
|
if (AOscAddressBook.DataTable.State in dsEditModes) then
|
|
AOscAddressBook.DataTable.Post;
|
|
|
|
// Ejemplos de validaciones
|
|
{
|
|
if (AOscAddressBook.ID_CLIENTE < 0) or
|
|
(not Assigned(AOscAddressBook.Cliente)) or
|
|
(AOscAddressBook.Cliente.IsEmpty) then
|
|
raise Exception.Create('Debe indicar el cliente de esta factura');
|
|
|
|
if (EsFechaVacia(AOscAddressBook.FECHA_FACTURA)) then
|
|
raise Exception.Create('Debe indicar la fecha de esta factura');
|
|
|
|
if Length(AOscAddressBook.REFERENCIA) = 0 then
|
|
raise Exception.Create('Debe indicar una referencia para esta forma de pago.');
|
|
|
|
if Length(AOscAddressBook.DESCRIPCION) = 0 then
|
|
raise Exception.Create('Debe indicar una descripción para esta forma de pago.');
|
|
}
|
|
|
|
|
|
{ Asegurarse de valores en campos "automáticos" tanto
|
|
en MODIFICACIÓN como en INSERCIÓN. }
|
|
{ AOscAddressBook.Edit;
|
|
try
|
|
AOscAddressBook.USUARIO := dmUsuarios.LoginInfo.Usuario;
|
|
Result := True;
|
|
finally
|
|
AOscAddressBook.Post;
|
|
end;}
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TOscAddressBookController.Ver(AOscAddressBook: IBizOscAddressBook);
|
|
{var
|
|
AEditor : IEditorOscAddressBook;}
|
|
begin
|
|
{ AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorOscAddressBook', IEditorOscAddressBook, AEditor);
|
|
with AEditor do
|
|
OscAddressBook := AOscAddressBook;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.ShowModal;
|
|
AEditor.Release;
|
|
finally
|
|
AEditor := NIL;
|
|
end;}
|
|
end;
|
|
|
|
procedure TOscAddressBookController.VerTodos(AOscAddressBook: IBizOscAddressBook);
|
|
{var
|
|
AEditor : IEditorOscAddressBook;}
|
|
begin
|
|
{ AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorOscAddressBook', IEditorOscAddressBook, AEditor);
|
|
with AEditor do
|
|
OscAddressBook := AOscAddressBook;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.ShowModal;
|
|
AEditor.Release;
|
|
finally
|
|
AEditor := NIL;
|
|
end;}
|
|
end;
|
|
|
|
function TOscAddressBookController.Eliminar(AOscAddressBook: IBizOscAddressBook): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(AOscAddressBook) then
|
|
raise Exception.Create ('OscAddressBook no asignado');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
if (AOscAddressBook.State in dsEditModes) then
|
|
AOscAddressBook.Cancel;
|
|
|
|
AOscAddressBook.Delete;
|
|
AOscAddressBook.DataTable.ApplyUpdates;
|
|
HideHourglassCursor;
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
procedure TOscAddressBookController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
|
|
// Descomentar si hubiera detalles
|
|
{var
|
|
AOscAddressBook : IBizOscAddressBook;
|
|
ADetalles : IBizDetallesOscAddressBook;}
|
|
begin
|
|
inherited;
|
|
|
|
// Descomentar si hubiera detalles
|
|
{if Supports(ADataTable, IBizDetallesOscAddressBook, ADetalles) and
|
|
Supports(ADetalles.DataTable.MasterSource.DataTable, IBizOscAddressBook, AOscAddressBook) then
|
|
begin
|
|
AOscAddressBook.Edit;
|
|
try
|
|
AOscAddressBook.IMPORTE_TOTAL := FDetallesController.DarTotalImporteTotal(ADetalles);
|
|
finally
|
|
AOscAddressBook.Post;
|
|
end;
|
|
end;}
|
|
end;
|
|
|
|
function TOscAddressBookController.Guardar(AOscAddressBook: IBizOscAddressBook): Boolean;
|
|
{var
|
|
NuevoID : Integer;}
|
|
begin
|
|
Result := False;
|
|
|
|
if ValidarOscAddressBook(AOscAddressBook) then
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
{ if AOscAddressBook.EsNuevo then
|
|
NuevoID := FDataModule.GetNextID(AOscAddressBook.DataTable.LogicalName)
|
|
else
|
|
NuevoID := AOscAddressBook.ID;
|
|
|
|
AsignarID(AOscAddressBook, NuevoID);}
|
|
AOscAddressBook.DataTable.ApplyUpdates;
|
|
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TOscAddressBookController.Localizar(AOscAddressBook: IBizOscAddressBook; AIDLocal : Integer): Boolean;
|
|
begin
|
|
Result := True;
|
|
ShowHourglassCursor;
|
|
try
|
|
with AOscAddressBook.DataTable do
|
|
begin
|
|
DisableControls;
|
|
First;
|
|
if not Locate(fld_osc_AddressBookrdx_address_book_id_local, AIDLocal, []) then
|
|
Result := False;
|
|
EnableControls;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TOscAddressBookController.ExtraerSeleccionados(AOscAddressBook: IBizOscAddressBook): IBizOscAddressBook;
|
|
var
|
|
ASeleccionados : IBizOscAddressBook;
|
|
begin
|
|
ASeleccionados := (Self.Buscar(ID_NULO) as IBizOscAddressBook);
|
|
CopyDataTable(AOscAddressBook.DataTable, ASeleccionados.DataTable, True);
|
|
Result := ASeleccionados;
|
|
end;
|
|
|
|
function TOscAddressBookController.ElegirOscAddressBook(AOscAddressBook: IBizOscAddressBook; AMensaje: String; AMultiSelect: Boolean): IBizOscAddressBook;
|
|
{var
|
|
AEditor : IEditorElegirOscAddressBook;}
|
|
begin
|
|
{ Result := NIL;
|
|
|
|
CreateEditor('EditorElegirOscAddressBook', IEditorElegirOscAddressBook, AEditor);
|
|
try
|
|
with AEditor do
|
|
begin
|
|
OscAddressBook := AOscAddressBook;
|
|
MultiSelect := AMultiSelect;
|
|
Mensaje := AMensaje;
|
|
if IsPositiveResult(ShowModal) then
|
|
Result := OscAddressBookSeleccionados;
|
|
Release;
|
|
end;
|
|
finally
|
|
AEditor := NIL;
|
|
end;}
|
|
end;
|
|
|
|
// Descomentar esto si hay informe
|
|
// procedure TOscAddressBookController.Preview(AOscAddressBook: IBizOscAddressBook);
|
|
// var
|
|
// AReportController : IOscAddressBookReportController;
|
|
// begin
|
|
// AReportController := TOscAddressBookReportController.Create;
|
|
// try
|
|
// AReportController.Preview(AOscAddressBook.ID);
|
|
// finally
|
|
// AReportController := NIL;
|
|
// end;
|
|
// end;
|
|
|
|
// Descomentar esto si hay informe
|
|
// procedure TOscAddressBookController.Print(AOscAddressBook: IBizOscAddressBook);
|
|
// var
|
|
// AReportController : IOscAddressBookReportController;
|
|
// begin
|
|
// AReportController := TOscAddressBookReportController.Create;
|
|
// try
|
|
// AReportController.Print(AOscAddressBook.ID);
|
|
// finally
|
|
// AReportController := NIL;
|
|
// end;
|
|
// end;
|
|
|
|
end.
|