2007-06-19 17:12:00 +00:00
unit uRemesasProveedorController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleRemesasProveedor, uBizRemesasProveedor, uProveedoresController,
2008-07-15 18:09:26 +00:00
uBizContactos, uRecibosProveedorController, uViewGridBase;
2007-06-19 17:12:00 +00:00
type
IRemesasProveedorController = interface( IObservador)
[ '{C14143FE-0806-4E64-93E2-A2C0170BBD41}' ]
function Buscar( const ID: Integer ) : IBizRemesaProveedor;
function BuscarTodos: IBizRemesaProveedor; overload ;
procedure Ver( ARemesaProveedor : IBizRemesaProveedor) ;
procedure VerTodos( ARemesasProveedor: IBizRemesaProveedor) ;
function Nuevo : IBizRemesaProveedor;
procedure Anadir( ARemesaProveedor : IBizRemesaProveedor) ;
function Eliminar( const ID : Integer ) : Boolean ; overload ;
2007-07-30 19:17:40 +00:00
function Eliminar( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) : Boolean ; overload ;
2007-06-19 17:12:00 +00:00
function Guardar( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
procedure DescartarCambios( ARemesaProveedor : IBizRemesaProveedor) ;
function Existe( const ID: Integer ) : Boolean ;
2007-07-30 19:17:40 +00:00
procedure Preview( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) ;
2008-07-15 18:09:26 +00:00
function Print( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) : Boolean ;
2007-07-30 19:17:40 +00:00
function EsModificable( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
function EsEliminable( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
2007-06-19 17:12:00 +00:00
2009-07-08 11:39:18 +00:00
function ElegirRecibosProveedor( ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList) : Boolean ;
2007-06-19 17:12:00 +00:00
procedure EliminarReciboProveedor( ARemesaProveedor : IBizRemesaProveedor) ;
function GetRecibosProveedorController: IRecibosProveedorController;
property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController;
procedure RecuperarRecibos( ARemesaProveedor: IBizRemesaProveedor) ;
2008-07-15 18:09:26 +00:00
function ExtraerSeleccionados( ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil ) : IBizRemesaProveedor;
2009-02-26 10:44:16 +00:00
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno( ARemesa: IBizRemesaProveedor; AWhereDataTable: String ; const Ano: String ) ;
2007-06-19 17:12:00 +00:00
end ;
TRemesasProveedorController = class( TObservador, IRemesasProveedorController)
protected
FDataModule : IDataModuleRemesasProveedor;
FRecibosProveedorController: IRecibosProveedorController;
function GetRecibosProveedorController: IRecibosProveedorController;
procedure RecibirAviso( ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable) ; override ;
procedure AsignarID( ARemesaProveedor: IBizRemesaProveedor; const IDNuevo: Integer ) ; virtual ;
function CreateEditor( const AName : String ; const IID: TGUID; out Intf) : Boolean ;
function _Vacio : IBizRemesaProveedor;
procedure FiltrarEmpresa( ARemesaProveedor: IBizRemesaProveedor) ;
function ValidarRemesaProveedor( ARemesaProveedor: IBizRemesaProveedor) : Boolean ; virtual ;
procedure RecuperarRecibos( ARemesaProveedor: IBizRemesaProveedor) ;
procedure RecuperarObjetos( ARemesaProveedor: IBizRemesaProveedor) ; virtual ;
procedure AsignarDataModule; virtual ;
public
property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController;
constructor Create; virtual ;
destructor Destroy; override ;
function Eliminar( const ID : Integer ) : Boolean ; overload ;
2007-07-30 19:17:40 +00:00
function Eliminar( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) : Boolean ; overload ;
2007-06-19 17:12:00 +00:00
function Guardar( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
procedure DescartarCambios( ARemesaProveedor : IBizRemesaProveedor) ; virtual ;
function Existe( const ID: Integer ) : Boolean ; virtual ;
procedure Anadir( ARemesaProveedor : IBizRemesaProveedor) ; virtual ;
function Buscar( const ID: Integer ) : IBizRemesaProveedor; virtual ;
function BuscarTodos: IBizRemesaProveedor; overload ;
function Nuevo : IBizRemesaProveedor; virtual ;
procedure Ver( ARemesaProveedor : IBizRemesaProveedor) ; virtual ;
procedure VerTodos( ARemesasProveedor: IBizRemesaProveedor) ; virtual ;
2007-07-30 19:17:40 +00:00
procedure Preview( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) ; virtual ;
2008-07-15 18:09:26 +00:00
function Print( ARemesaProveedor : IBizRemesaProveedor; AllItems: Boolean = false ) : boolean ; virtual ;
2007-07-30 19:17:40 +00:00
function EsModificable( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
function EsEliminable( ARemesaProveedor : IBizRemesaProveedor) : Boolean ;
2007-06-19 17:12:00 +00:00
2008-07-15 18:09:26 +00:00
function ExtraerSeleccionados( ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil ) : IBizRemesaProveedor; virtual ;
2009-07-08 11:39:18 +00:00
function ElegirRecibosProveedor( ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList) : Boolean ;
2007-06-19 17:12:00 +00:00
procedure EliminarReciboProveedor( ARemesaProveedor : IBizRemesaProveedor) ;
2009-02-26 10:44:16 +00:00
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno( ARemesa: IBizRemesaProveedor; AWhereDataTable: String ; const Ano: String ) ;
2007-06-19 17:12:00 +00:00
end ;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schRemesasProveedorClient_Intf,
schRecibosProveedorClient_Intf, uIEditorRemesasProveedor, uIEditorRemesaProveedor,
Dialogs, uDataModuleRemesasProveedor, uDataModuleUsuarios, uDAInterfaces,
uDataTableUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows,
uBizRecibosProveedor, Variants, uRemesasProveedorReportController;
{ TRemesasProveedorController }
procedure TRemesasProveedorController. Anadir( ARemesaProveedor: IBizRemesaProveedor) ;
begin
ARemesaProveedor. Insert;
end ;
procedure TRemesasProveedorController. EliminarReciboProveedor( ARemesaProveedor: IBizRemesaProveedor) ;
var
ARecibosRemesa : IBizRecibosProveedor;
begin
inherited ;
ARecibosRemesa : = ARemesaProveedor. Recibos;
RecibosProveedorController. QuitarRemesa( ARecibosRemesa) ;
//Quitamos el recibo de la remesa sin que el servidor se entere para que no elimine el recibo
DesconectarTabla( ARecibosRemesa. DataTable) ;
ARecibosRemesa. DataTable. Delete;
ConectarTabla( ARecibosRemesa. DataTable) ;
ARecibosRemesa : = Nil ;
end ;
2007-07-30 19:17:40 +00:00
function TRemesasProveedorController. EsEliminable( ARemesaProveedor: IBizRemesaProveedor) : Boolean ;
begin
Result : = True ;
end ;
function TRemesasProveedorController. EsModificable( ARemesaProveedor: IBizRemesaProveedor) : Boolean ;
begin
Result : = True ;
end ;
2007-06-19 17:12:00 +00:00
procedure TRemesasProveedorController. AsignarDataModule;
begin
FDataModule : = TDataModuleRemesasProveedor. Create( Nil ) ;
FRecibosProveedorController : = TRecibosProveedorController. Create;
end ;
procedure TRemesasProveedorController. AsignarID( ARemesaProveedor: IBizRemesaProveedor; const IDNuevo: Integer ) ;
begin
if not Assigned( ARemesaProveedor) then
raise Exception. Create ( 'RemesaProveedor no asignado' ) ;
ARemesaProveedor. Edit;
ARemesaProveedor. ID : = IDNuevo;
ARemesaProveedor. Post;
end ;
function TRemesasProveedorController. Buscar( const ID: Integer ) : IBizRemesaProveedor;
begin
Result : = ( FDataModule as IDataModuleRemesasProveedor) . GetItem( ID) ;
FiltrarEmpresa( Result ) ;
end ;
function TRemesasProveedorController. BuscarTodos: IBizRemesaProveedor;
begin
Result : = FDataModule. GetItems;
FiltrarEmpresa( Result ) ;
end ;
constructor TRemesasProveedorController. Create;
begin
AsignarDataModule;
end ;
function TRemesasProveedorController. CreateEditor( const AName: String ;
const IID: TGUID; out Intf) : Boolean ;
begin
Result : = Supports( EditorRegistry. CreateEditor( AName) , IID, Intf) ;
end ;
2009-02-26 10:44:16 +00:00
function TRemesasProveedorController. DarListaAnosRemesas: TStringList;
begin
Result : = FDataModule. GetAnosItems;
end ;
2007-06-19 17:12:00 +00:00
procedure TRemesasProveedorController. DescartarCambios( ARemesaProveedor: IBizRemesaProveedor) ;
begin
if not Assigned( ARemesaProveedor) then
raise Exception. Create ( 'RemesaProveedor no asignado' ) ;
ShowHourglassCursor;
try
if ( ARemesaProveedor. State in dsEditModes) then
ARemesaProveedor. Cancel;
ARemesaProveedor. DataTable. CancelUpdates;
finally
HideHourglassCursor;
end ;
end ;
destructor TRemesasProveedorController. Destroy;
begin
FDataModule : = Nil ;
FRecibosProveedorController : = Nil ;
inherited ;
end ;
function TRemesasProveedorController. ValidarRemesaProveedor( ARemesaProveedor: IBizRemesaProveedor) : Boolean ;
begin
Result : = False ;
if not Assigned( ARemesaProveedor) then
raise Exception. Create ( 'Remesa no asignada' ) ;
if ( ARemesaProveedor. DataTable. State in dsEditModes) then
ARemesaProveedor. DataTable. Post;
if ARemesaProveedor. DataTable. FieldByName( fld_RemesasProveedorFECHA_REMESA) . IsNull then
raise Exception. Create( 'Debe indicar la fecha de esta remesa.' ) ;
if ARemesaProveedor. ID_DATOS_BANCO < 1 then
raise Exception. Create( 'Debe la cuenta bancaria sobre la que realizar<61> la remesa.' ) ;
// Asegurarse de valores en campos "autom<6F> ticos"
ARemesaProveedor. Edit;
try
ARemesaProveedor. USUARIO : = dmUsuarios. LoginInfo. Usuario;
Result : = True ;
finally
ARemesaProveedor. Post;
end ;
end ;
procedure TRemesasProveedorController. Ver( ARemesaProveedor: IBizRemesaProveedor) ;
var
AEditor : IEditorRemesaProveedor;
begin
AEditor : = NIL ;
ShowHourglassCursor;
try
RecuperarObjetos( ARemesaProveedor) ;
CreateEditor( 'EditorRemesaProveedor' , IEditorRemesaProveedor, AEditor) ;
2007-07-30 19:17:40 +00:00
if Assigned( AEditor) then
with ( AEditor as IEditorRemesaProveedor) do
begin
Controller : = Self; //OJO ORDEN MUY IMPORTANTE
RemesaProveedor : = ARemesaProveedor;
//MODO CONSULTAR
if not EsModificable( ARemesaProveedor) then
begin
SetDataTableReadOnly( ARemesaProveedor. DataTable, True ) ;
ReadOnly : = True ;
end ;
ShowModal;
//MODO CONSULTAR (Se deja la tabla como estaba)
if ReadOnly then
SetDataTableReadOnly( ARemesaProveedor. DataTable, False ) ;
AEditor. Release;
2007-06-19 17:12:00 +00:00
end ;
finally
2007-07-30 19:17:40 +00:00
AEditor : = NIL ;
2007-06-19 17:12:00 +00:00
HideHourglassCursor;
end ;
end ;
procedure TRemesasProveedorController. VerTodos( ARemesasProveedor: IBizRemesaProveedor) ;
var
AEditor : IEditorRemesasProveedor;
begin
AEditor : = NIL ;
ShowHourglassCursor;
try
CreateEditor( 'EditorRemesasProveedor' , IEditorRemesasProveedor, AEditor) ;
2007-07-30 19:17:40 +00:00
if Assigned( AEditor) then
with ( AEditor as IEditorRemesasProveedor) do
begin
Controller : = Self; //OJO ORDEN MUY IMPORTANTE
RemesasProveedor : = ARemesasProveedor;
MultiSelect : = True ;
ShowEmbedded;
end ;
2007-06-19 17:12:00 +00:00
finally
2007-07-30 19:17:40 +00:00
AEditor : = Nil ;
2007-06-19 17:12:00 +00:00
HideHourglassCursor;
end ;
end ;
function TRemesasProveedorController. _Vacio: IBizRemesaProveedor;
begin
Result : = Buscar( ID_NULO) ;
end ;
function TRemesasProveedorController. Eliminar( const ID: Integer ) : Boolean ;
var
ARemesaProveedor : IBizRemesaProveedor;
begin
ARemesaProveedor : = Buscar( ID) ;
if not Assigned( ARemesaProveedor) then
raise Exception. Create( Format( 'No se ha encontrado la remesa con ID = %d' , [ ID] ) ) ;
Result : = Eliminar( ARemesaProveedor) ;
ARemesaProveedor : = NIL ;
end ;
2009-07-08 11:39:18 +00:00
function TRemesasProveedorController. ElegirRecibosProveedor( ARemesaProveedor: IBizRemesaProveedor; AListaRecibosIniciales: TStringList) : Boolean ;
2007-06-19 17:12:00 +00:00
var
ARecibosRemesa : IBizRecibosProveedor;
ARecibosSeleccionados : IBizRecibosProveedor;
2009-07-08 11:39:18 +00:00
ListaRecibosVisibles: TStringList;
ListaRecibosNoVisibles: TStringList;
i: Integer ;
2007-06-19 17:12:00 +00:00
begin
Result : = False ;
2009-07-08 11:39:18 +00:00
ListaRecibosVisibles : = TStringList. Create;
ListaRecibosNoVisibles : = TStringList. Create;
//Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion
ARemesaProveedor. Recibos. DataTable. First;
while not ARemesaProveedor. Recibos. DataTable. eof do
begin
ListaRecibosNoVisibles. Add( IntToStr( ARemesaProveedor. Recibos. ID) ) ;
ARemesaProveedor. Recibos. DataTable. Next;
end ;
ARemesaProveedor. Recibos. DataTable. First;
//Si de la lista inicial hay alguno que no se encuentre en la lista de recibos de la
//remesa que tenemos en memoria dicho recibo deber<65> a verse por lo que lo a<> adimos a la lista de visibles
for i : = 0 to AListaRecibosIniciales. Count - 1 do
begin
ARemesaProveedor. Recibos. DataTable. First;
if not ARemesaProveedor. Recibos. DataTable. Locate( fld_RecibosProveedorID, AListaRecibosIniciales. strings[ i] , [ ] ) then
ListaRecibosVisibles. Add( AListaRecibosIniciales. strings[ i] ) ;
end ;
ARemesaProveedor. Recibos. DataTable. First;
ARecibosSeleccionados : = ( FRecibosProveedorController. ElegirRecibos( FRecibosProveedorController. BuscarRecibosARemesar( ListaRecibosVisibles, ListaRecibosNoVisibles) , 'Elija uno o m<> s recibos para incluirlos en esta remesa' , True ) as IBizRecibosProveedor) ;
2007-06-19 17:12:00 +00:00
if Assigned( ARecibosSeleccionados) then
begin
ShowHourglassCursor;
try
ARecibosRemesa : = ARemesaProveedor. Recibos;
//Copia los recibos seleccionados a los recibos de la remesa sin que el servidor se entere de
//las inserciones
DuplicarRegistros( ARecibosSeleccionados. DataTable, ARecibosRemesa. DataTable, mdrTodos, False , False , True ) ;
FRecibosProveedorController. SetSituacionCobrados( ARecibosRemesa) ;
Result : = True ;
finally
HideHourglassCursor;
end ;
end ;
2009-07-08 11:39:18 +00:00
ListaRecibosVisibles. Free;
ListaRecibosNoVisibles. Free;
2007-06-19 17:12:00 +00:00
ARecibosRemesa : = Nil ;
ARecibosSeleccionados : = Nil ;
end ;
2007-07-30 19:17:40 +00:00
function TRemesasProveedorController. Eliminar( ARemesaProveedor: IBizRemesaProveedor; AllItems: Boolean = false ) : Boolean ;
//En el caso de eliminar almenos un elemento del conjunto se devuelve true
var
bEliminado: Boolean ;
2007-06-19 17:12:00 +00:00
begin
2007-07-30 19:17:40 +00:00
bEliminado : = False ;
2007-06-19 17:12:00 +00:00
if not Assigned( ARemesaProveedor) then
2007-07-30 19:17:40 +00:00
raise Exception. Create ( 'ARemesaProveedor no asignada' ) ;
2007-06-19 17:12:00 +00:00
ShowHourglassCursor;
try
2007-07-30 19:17:40 +00:00
if not ARemesaProveedor. DataTable. Active then
ARemesaProveedor. DataTable. Active : = True ;
2007-06-19 17:12:00 +00:00
if ( ARemesaProveedor. State in dsEditModes) then
ARemesaProveedor. Cancel;
2007-07-30 19:17:40 +00:00
//Siempre eliminaremos el seleccionado
if EsEliminable( ARemesaProveedor) then
2007-06-19 17:12:00 +00:00
begin
2007-07-30 19:17:40 +00:00
//Si la llamada a eliminar es por el editor RemesasProveedor, debo recuperar los recibos
//de la remesa a eliminar, en caso de venir por el editor RemesaProveedor ya los tengo
if not Assigned( ARemesaProveedor. Recibos) then
RecuperarRecibos( ARemesaProveedor) ;
//Eliminaremos la remesa de los recibos asociados
With ARemesaProveedor. Recibos. DataTable do
2007-06-19 17:12:00 +00:00
begin
2007-07-30 19:17:40 +00:00
First;
While not Eof do
begin
RecibosProveedorController. QuitarRemesa( ARemesaProveedor. Recibos) ;
Next;
end ;
2007-06-19 17:12:00 +00:00
end ;
2007-07-30 19:17:40 +00:00
//Como no est<73> n declarados como maestro-detalles debemos hacer el applyupdates nosotros
ARemesaProveedor. Recibos. DataTable. ApplyUpdates;
ARemesaProveedor. Delete;
bEliminado : = True ;
2007-06-19 17:12:00 +00:00
end ;
2007-07-30 19:17:40 +00:00
//En el caso de querer eliminar todos los items del objeto AAlbaran
if AllItems then
begin
with ARemesaProveedor. DataTable do
begin
First;
while not EOF do
begin
if EsEliminable( ARemesaProveedor) then
begin
//Si la llamada a eliminar es por el editor RemesasProveedor, debo recuperar los recibos
//de la remesa a eliminar, en caso de venir por el editor RemesaProveedor ya los tengo
if not Assigned( ARemesaProveedor. Recibos) then
RecuperarRecibos( ARemesaProveedor) ;
//Eliminaremos la remesa de los recibos asociados
With ARemesaProveedor. Recibos. DataTable do
begin
First;
While not Eof do
begin
RecibosProveedorController. QuitarRemesa( ARemesaProveedor. Recibos) ;
Next;
end ;
end ;
//Como no est<73> n declarados como maestro-detalles debemos hacer el applyupdates nosotros
ARemesaProveedor. Recibos. DataTable. ApplyUpdates;
ARemesaProveedor. Delete;
bEliminado : = True
end
else Next;
end ;
end ;
end ;
2007-06-19 17:12:00 +00:00
2007-07-30 19:17:40 +00:00
if bEliminado then
begin
ARemesaProveedor. DataTable. ApplyUpdates;
Result : = True ;
end
else
Result : = False ;
2007-06-19 17:12:00 +00:00
HideHourglassCursor;
except
//Hay algun recibo de la remesa que tiene movimientos (Cobros/Devoluciones) posteriores al cobro inicial de la remesa
on E: Exception do
begin
ARemesaProveedor. Recibos. DataTable. CancelUpdates;
ARemesaProveedor. DataTable. CancelUpdates;
HideHourglassCursor;
MessageBox( 0 , 'Exiten movimientos (Cobros/Devoluciones) en los recibos posteriores al cobro inicial de la remesa' , 'Atenci<63> n' , MB_ICONWARNING or MB_OK) ;
end ;
end ;
end ;
procedure TRemesasProveedorController. RecibirAviso( ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable) ;
begin
inherited ;
//
end ;
procedure TRemesasProveedorController. RecuperarObjetos( ARemesaProveedor: IBizRemesaProveedor) ;
begin
RecuperarRecibos( ARemesaProveedor) ;
end ;
procedure TRemesasProveedorController. RecuperarRecibos( ARemesaProveedor: IBizRemesaProveedor) ;
begin
2007-07-11 14:12:15 +00:00
ARemesaProveedor. Recibos : = RecibosProveedorController. BuscarRecibosRemesa( ARemesaProveedor. ID) ;
2007-06-19 17:12:00 +00:00
end ;
function TRemesasProveedorController. Existe( const ID: Integer ) : Boolean ;
var
ARemesaProveedor : IBizRemesaProveedor;
begin
try
ARemesaProveedor : = Buscar( ID) ;
Result : = Assigned( ARemesaProveedor) and ( ARemesaProveedor. ID = ID) ;
finally
ARemesaProveedor : = NIL ;
end ;
end ;
2008-07-15 18:09:26 +00:00
function TRemesasProveedorController. ExtraerSeleccionados( ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil ) : IBizRemesaProveedor;
2007-06-19 17:12:00 +00:00
var
ASeleccionados : IBizRemesaProveedor;
begin
2008-07-15 18:09:26 +00:00
if Assigned( ViewGrid) then
begin
//Guardamos la situaci<63> n porque el CopyDataTable nos cambia la posicion
ViewGrid. SaveGridStatus;
ViewGrid. DesactivarGrid;
end ;
2007-06-19 17:12:00 +00:00
ASeleccionados : = ( Self. Buscar( ID_NULO) as IBizRemesaProveedor) ;
CopyDataTable( ARemesasProveedor. DataTable, ASeleccionados. DataTable, True ) ;
Result : = ASeleccionados;
2008-07-15 18:09:26 +00:00
if Assigned( ViewGrid) then
begin
ViewGrid. ActivarGrid;
ViewGrid. RestoreGridStatus;
end ;
2007-06-19 17:12:00 +00:00
end ;
2009-02-26 10:44:16 +00:00
procedure TRemesasProveedorController. FiltrarAno( ARemesa: IBizRemesaProveedor; AWhereDataTable: String ; const Ano: String ) ;
var
FechaIni: String ;
FechaFin: String ;
begin
ARemesa. DataTable. Where. Clear;
ARemesa. DataTable. Where. AddText( AWhereDataTable) ;
if ( Ano < > 'Todos' ) then
begin
// Filtrar las remesas actuales por empresa
FechaIni : = '01.01.' + Ano;
FechaFin : = '31.12.' + Ano;
with ARemesa. DataTable. Where do
begin
if NotEmpty then
AddOperator( opAND) ;
AddCondition( fld_RemesasProveedorFECHA_REMESA, cMajorOrEqual, FechaIni) ;
AddOperator( opAND) ;
AddCondition( fld_RemesasProveedorFECHA_REMESA, cLessOrEqual, FechaFin) ;
end ;
end ;
end ;
2007-06-19 17:12:00 +00:00
procedure TRemesasProveedorController. FiltrarEmpresa( ARemesaProveedor: IBizRemesaProveedor) ;
begin
if ARemesaProveedor. DataTable. Active then
ARemesaProveedor. DataTable. Active : = False ;
// Filtrar los contactos actuales por empresa
with ARemesaProveedor. DataTable. Where do
begin
if NotEmpty then
AddOperator( opAND) ;
// Para evitar ambig<69> edades en la SQL del servidor
AddText( fld_RemesasProveedorID_EMPRESA + ' = ' + IntToStr( dmUsuarios. IDEmpresaActual) ) ;
// AddCondition('##' + fld_RemesasProveedorID_EMPRESA, cEqual, dmUsuarios.IDEmpresaActual);
end ;
end ;
function TRemesasProveedorController. GetRecibosProveedorController: IRecibosProveedorController;
begin
Result : = FRecibosProveedorController;
end ;
function TRemesasProveedorController. Guardar( ARemesaProveedor: IBizRemesaProveedor) : Boolean ;
var
NuevoID: Integer ;
bEsNuevo: Boolean ;
begin
Result : = False ;
if ValidarRemesaProveedor( ARemesaProveedor) then
begin
ShowHourglassCursor;
try
bEsNuevo : = ARemesaProveedor. EsNuevo;
if ( bEsNuevo) then
NuevoID : = FDataModule. GetNextID( ARemesaProveedor. DataTable. LogicalName)
else
NuevoID : = ARemesaProveedor. ID;
AsignarID( ARemesaProveedor, NuevoID) ;
//Si es nuevo debemos hacer el applyupdates por la integridad referencial de BD
if bEsNuevo then
ARemesaProveedor. DataTable. ApplyUpdates;
//Si todo ha ido bien, asignamos la remesa a los recibos asociados
//Como no est<73> n declarados como maestro-detalles debemos hacer el applyupdates nosotros
RecibosProveedorController. AsignarRemesa( ARemesaProveedor. Recibos, NuevoID) ;
ARemesaProveedor. Recibos. DataTable. ApplyUpdates; //En este applyupdates tambien se realizar<61> n todos los cambios acumulados sobre los recibos asociados (EliminarReciboProveedor/ ElegirRecibosProveedor)
//Es necesario ya que no se refrescan bien los deltas y despues del applyupdates siguen
//existiendo deltas, de esta forma los limpiamos
if ARemesaProveedor. Recibos. DataTable. HasDelta then
ARemesaProveedor. Recibos. DataTable. Refresh;
ARemesaProveedor. DataTable. ApplyUpdates;
Result : = True ;
finally
HideHourglassCursor;
end ;
end ;
end ;
function TRemesasProveedorController. Nuevo: IBizRemesaProveedor;
var
ARemesaProveedor : IBizRemesaProveedor;
begin
ARemesaProveedor : = FDataModule. NewItem;
FiltrarEmpresa( ARemesaProveedor) ;
ARemesaProveedor. DataTable. Active : = True ;
ARemesaProveedor. Insert;
Result : = ARemesaProveedor;
end ;
2007-07-30 19:17:40 +00:00
procedure TRemesasProveedorController. Preview( ARemesaProveedor: IBizRemesaProveedor; AllItems: Boolean = false ) ;
2007-06-19 17:12:00 +00:00
var
AReportController : IRemesasProveedorReportController;
2007-07-30 19:17:40 +00:00
ID_Remesas: TStringList;
2007-06-19 17:12:00 +00:00
begin
AReportController : = TRemesasProveedorReportController. Create;
try
2007-07-30 19:17:40 +00:00
ID_Remesas : = TStringList. Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with ARemesaProveedor. DataTable do
begin
First;
while not EOF do
begin
ID_Remesas. Add( IntToStr( ARemesaProveedor. ID) ) ;
Next;
end ;
end ;
end
//Solo previsualizamos el item seleccionado
else
ID_Remesas. Add( IntToStr( ARemesaProveedor. ID) ) ;
AReportController. Preview( ID_Remesas. CommaText) ;
2007-06-19 17:12:00 +00:00
finally
AReportController : = NIL ;
2007-07-30 19:17:40 +00:00
ID_Remesas. Free;
2007-06-19 17:12:00 +00:00
end ;
end ;
2008-07-15 18:09:26 +00:00
function TRemesasProveedorController. Print( ARemesaProveedor: IBizRemesaProveedor; AllItems: Boolean = false ) : Boolean ;
2007-06-19 17:12:00 +00:00
var
AReportController : IRemesasProveedorReportController;
2007-07-30 19:17:40 +00:00
ID_Remesas: TStringList;
2007-06-19 17:12:00 +00:00
begin
AReportController : = TRemesasProveedorReportController. Create;
try
2007-07-30 19:17:40 +00:00
ID_Remesas : = TStringList. Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with ARemesaProveedor. DataTable do
begin
First;
while not EOF do
begin
ID_Remesas. Add( IntToStr( ARemesaProveedor. ID) ) ;
Next;
end ;
end ;
end
//Solo previsualizamos el item seleccionado
else
ID_Remesas. Add( IntToStr( ARemesaProveedor. ID) ) ;
AReportController. Print( ID_Remesas. CommaText) ;
2007-06-19 17:12:00 +00:00
finally
AReportController : = NIL ;
2007-07-30 19:17:40 +00:00
ID_Remesas. Free;
2007-06-19 17:12:00 +00:00
end ;
end ;
end .