Se arreglan las remesas para que cuando añadimos recibos, la lista de recibos a seleccionar no aparezcan los que tenemos ya asignadoe en la remesa

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@315 c93665c3-c93d-084d-9b98-7d5f4a9c3376
This commit is contained in:
roberto 2009-07-08 11:39:18 +00:00
parent 72c7795cb3
commit 3d656d4e2b
10 changed files with 146 additions and 17 deletions

View File

@ -59,7 +59,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente;
function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente;
function BuscarRecibosARemesar: IBizRecibosCliente;
function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
procedure VerTodos(ARecibosCliente: IBizRecibosCliente);
procedure Ver(ARecibosCliente: IBizRecibosCliente);
@ -131,7 +131,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente;
function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente;
function BuscarRecibosARemesar: IBizRecibosCliente;
function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
procedure VerTodos(ARecibosCliente: IBizRecibosCliente);
procedure Ver(ARecibosCliente: IBizRecibosCliente);
@ -371,7 +371,9 @@ begin
end;
end;
function TRecibosClienteController.BuscarRecibosARemesar: IBizRecibosCliente;
function TRecibosClienteController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
var
i: Integer;
begin
ShowHourglassCursor;
try
@ -390,7 +392,23 @@ begin
OpenBraket;
AddText(fld_RecibosClienteSITUACION + ' <> ''' + CTE_COBRADO + '''');
CloseBraket;
//En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos
//añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD
for i := 0 to AListaNoVisibles.Count - 1 do
begin
AddOperator(opAND);
OpenBraket;
AddText(fld_RecibosClienteID + ' <> ''' + AListaNoVisibles.Strings[i] + '''');
CloseBraket;
end;
//En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa
//y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos
//secundarios puede provocar
//AListaVisibles
end;
finally
HideHourglassCursor;
end;

View File

@ -55,7 +55,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor;
function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor;
function BuscarRecibosARemesar: IBizRecibosProveedor;
function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor);
procedure Ver(ARecibosProveedor: IBizRecibosProveedor);
@ -118,7 +118,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor;
function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor;
function BuscarRecibosARemesar: IBizRecibosProveedor;
function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor);
procedure Ver(ARecibosProveedor: IBizRecibosProveedor);
@ -336,7 +336,10 @@ begin
end;
end;
function TRecibosProveedorController.BuscarRecibosARemesar: IBizRecibosProveedor;
function TRecibosProveedorController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
var
i: Integer;
begin
ShowHourglassCursor;
try
@ -354,6 +357,22 @@ begin
OpenBraket;
AddText(fld_RecibosProveedorSITUACION + ' <> ''' + CTE_PAGADO + '''');
CloseBraket;
//En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos
//añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD
for i := 0 to AListaNoVisibles.Count - 1 do
begin
AddOperator(opAND);
OpenBraket;
AddText(fld_RecibosProveedorID + ' <> ''' + AListaNoVisibles.Strings[i] + '''');
CloseBraket;
end;
//En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa
//y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos
//secundarios puede provocar
//AListaVisibles
end;
finally
HideHourglassCursor;

View File

@ -28,7 +28,7 @@ type
function EsModificable(ARemesaProveedor : IBizRemesaCliente): Boolean;
function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean;
function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean;
function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente);
function GetRecibosClienteController: IRecibosClienteController;
property RecibosClienteController: IRecibosClienteController read GetRecibosClienteController;
@ -82,7 +82,7 @@ type
function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean;
function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaCliente; virtual;
function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean;
function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente);
function DarListaAnosRemesas: TStringList;
@ -300,14 +300,40 @@ begin
ARemesaCliente := NIL;
end;
function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente): Boolean;
function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
var
ARecibosRemesa : IBizRecibosCliente;
ARecibosSeleccionados : IBizRecibosCliente;
ListaRecibosVisibles: TStringList;
ListaRecibosNoVisibles: TStringList;
i: Integer;
begin
Result := False;
ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente);
ListaRecibosVisibles := TStringList.Create;
ListaRecibosNoVisibles := TStringList.Create;
//Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion
ARemesaCliente.Recibos.DataTable.First;
while not ARemesaCliente.Recibos.DataTable.eof do
begin
ListaRecibosNoVisibles.Add(IntToStr(ARemesaCliente.Recibos.ID));
ARemesaCliente.Recibos.DataTable.Next;
end;
ARemesaCliente.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ía verse por lo que lo añadimos a la lista de visibles
for i := 0 to AListaRecibosIniciales.Count - 1 do
begin
ARemesaCliente.Recibos.DataTable.First;
if not ARemesaCliente.Recibos.DataTable.Locate(fld_RecibosClienteID, AListaRecibosIniciales.strings[i], []) then
ListaRecibosVisibles.Add(AListaRecibosIniciales.strings[i]);
end;
ARemesaCliente.Recibos.DataTable.First;
ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar(ListaRecibosVisibles, ListaRecibosNoVisibles), 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente);
if Assigned(ARecibosSeleccionados) then
begin
ShowHourglassCursor;
@ -323,6 +349,8 @@ begin
end;
end;
ListaRecibosVisibles.Free;
ListaRecibosNoVisibles.Free;
ARecibosRemesa := Nil;
ARecibosSeleccionados := Nil;
end;

View File

@ -1,6 +1,7 @@
inherited frViewRecibosRemesaCliente: TfrViewRecibosRemesaCliente
Width = 549
Height = 376
OnShow = CustomViewShow
ExplicitWidth = 549
ExplicitHeight = 376
inherited cxGrid: TcxGrid

View File

@ -28,10 +28,12 @@ type
cxGridViewIMPORTE: TcxGridDBColumn;
cxGridViewOTROS_GASTOS: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
procedure CustomViewShow(Sender: TObject);
protected
FHayCambios : Boolean;
FRemesa : IBizRemesaCliente;
FController : IRemesasClienteController;
FListaRecibosIniciales: TStringList;
procedure AnadirInterno; override;
procedure EliminarInterno; override;
@ -64,7 +66,7 @@ uses
procedure TfrViewRecibosRemesaCliente.AnadirInterno;
begin
//inherited; // No hacer el comportamiento normal
if FController.ElegirRecibosCliente(RemesaCliente) then
if FController.ElegirRecibosCliente(RemesaCliente, FListaRecibosIniciales) then
begin
Modified := True;
end;
@ -74,10 +76,25 @@ constructor TfrViewRecibosRemesaCliente.Create(AOwner: TComponent);
begin
inherited;
FHayCambios := False;
FListaRecibosIniciales := TStringList.Create;
end;
procedure TfrViewRecibosRemesaCliente.CustomViewShow(Sender: TObject);
begin
inherited;
FRemesa.Recibos.DataTable.First;
while not FRemesa.Recibos.DataTable.eof do
begin
FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID));
FRemesa.Recibos.DataTable.next;
end;
FRemesa.Recibos.DataTable.First;
end;
destructor TfrViewRecibosRemesaCliente.Destroy;
begin
FListaRecibosIniciales.Free;
inherited;
end;

View File

@ -28,7 +28,7 @@ type
function EsModificable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor);
function GetRecibosProveedorController: IRecibosProveedorController;
property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController;
@ -82,7 +82,7 @@ type
function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaProveedor; virtual;
function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor);
function DarListaAnosRemesas: TStringList;
@ -300,14 +300,40 @@ begin
ARemesaProveedor := NIL;
end;
function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean;
function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
var
ARecibosRemesa : IBizRecibosProveedor;
ARecibosSeleccionados : IBizRecibosProveedor;
ListaRecibosVisibles: TStringList;
ListaRecibosNoVisibles: TStringList;
i: Integer;
begin
Result := False;
ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor);
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í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);
if Assigned(ARecibosSeleccionados) then
begin
ShowHourglassCursor;
@ -323,6 +349,8 @@ begin
end;
end;
ListaRecibosVisibles.Free;
ListaRecibosNoVisibles.Free;
ARecibosRemesa := Nil;
ARecibosSeleccionados := Nil;
end;

View File

@ -1,6 +1,7 @@
inherited frViewRecibosRemesaProveedor: TfrViewRecibosRemesaProveedor
Width = 549
Height = 376
OnShow = CustomViewShow
ExplicitWidth = 549
ExplicitHeight = 376
inherited cxGrid: TcxGrid

View File

@ -28,10 +28,12 @@ type
cxGridViewIMPORTE: TcxGridDBColumn;
cxGridViewOTROS_GASTOS: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
procedure CustomViewShow(Sender: TObject);
protected
FHayCambios : Boolean;
FRemesa : IBizRemesaProveedor;
FController : IRemesasProveedorController;
FListaRecibosIniciales: TStringList;
procedure AnadirInterno; override;
procedure EliminarInterno; override;
@ -64,7 +66,7 @@ uses
procedure TfrViewRecibosRemesaProveedor.AnadirInterno;
begin
//inherited; // No hacer el comportamiento normal
if FController.ElegirRecibosProveedor(RemesaProveedor) then
if FController.ElegirRecibosProveedor(RemesaProveedor, FListaRecibosIniciales) then
begin
Modified := True;
end;
@ -74,10 +76,25 @@ constructor TfrViewRecibosRemesaProveedor.Create(AOwner: TComponent);
begin
inherited;
FHayCambios := False;
FListaRecibosIniciales := TStringList.Create;
end;
procedure TfrViewRecibosRemesaProveedor.CustomViewShow(Sender: TObject);
begin
inherited;
FRemesa.Recibos.DataTable.First;
while not FRemesa.Recibos.DataTable.eof do
begin
FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID));
FRemesa.Recibos.DataTable.next;
end;
FRemesa.Recibos.DataTable.First;
end;
destructor TfrViewRecibosRemesaProveedor.Destroy;
begin
FListaRecibosIniciales.Free;
inherited;
end;

View File

@ -16,7 +16,7 @@ BEGIN
VALUE "FileVersion", "3.3.1.0\0"
VALUE "ProductName", "FactuGES Server\0"
VALUE "ProductVersion", "3.3.1.0\0"
VALUE "CompileDate", "viernes, 19 de junio de 2009 10:44\0"
VALUE "CompileDate", "miércoles, 08 de julio de 2009 12:22\0"
END
END
BLOCK "VarFileInfo"

Binary file not shown.