Tecsitel_FactuGES2/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas

409 lines
12 KiB
ObjectPascal
Raw Blame History

unit uEditorAlbaranesProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems,
TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls,
JvNavigationPane, uViewGrid, pngimage, JvComponentBase,
uEditorGridBase,
uBizAlbaranesProveedor, uIEditorAlbaranesProveedor, uAlbaranesProveedorController,
uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
uViewAlbaranesProveedor, JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces;
type
TfEditorAlbaranesProveedor = class(TfEditorGridBase, IEditorAlbaranesProveedor)
actGenerarFactura: TAction;
JsNuevoAlbaranDialog: TJSDialog;
JsPrevisualizarDialog: TJSDialog;
JsImprimirDialog: TJSDialog;
TBXItem39: TTBXItem;
JsListaAlbaranesNoEliminados: TJSDialog;
actGenerarDevolucion: TAction;
N5: TMenuItem;
Generardevolucin1: TMenuItem;
Generarfactura1: TMenuItem;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem38: TTBXItem;
TBXItem40: TTBXItem;
TBXItem41: TTBXItem;
procedure FormShow(Sender: TObject);
procedure actGenerarFacturaExecute(Sender: TObject);
procedure actGenerarFacturaUpdate(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
procedure actGenerarDevolucionUpdate(Sender: TObject);
procedure actGenerarDevolucionExecute(Sender: TObject);
protected
FAlbaranes: IBizAlbaranProveedor;
FController : IAlbaranesProveedorController;
function GetAlbaranes: IBizAlbaranProveedor;
procedure SetAlbaranes(const Value: IBizAlbaranProveedor);
function GetController : IAlbaranesProveedorController; virtual;
procedure SetController (const Value : IAlbaranesProveedorController); virtual;
procedure NuevoInterno; override;
procedure ModificarInterno; override;
procedure EliminarInterno; override;
procedure DuplicarInterno; override;
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Albaranes: IBizAlbaranProveedor read GetAlbaranes write SetAlbaranes;
property Controller : IAlbaranesProveedorController read GetController write SetController;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uDataModuleAlbaranesProveedor, uDataModuleUsuarios, uFactuGES_App,
uGenerarFacturasProvAlbProvUtils,
uGenerarAlbaranesProvUtils, uDialogOpcionesImpresionAlbaranesProveedor,
uEditorBase, schAlbaranesProveedorClient_Intf,
uGridStatusUtils, uDBSelectionListUtils;
{$R *.dfm}
{
*************************** TfEditorAlbaranesProveedor ***************************
}
procedure TfEditorAlbaranesProveedor.actEliminarUpdate(Sender: TObject);
begin
inherited;
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := not (FAlbaranes.ID_FACTURA > 0)
end;
procedure TfEditorAlbaranesProveedor.actGenerarDevolucionExecute(
Sender: TObject);
var
ADevolucion : IBizAlbaranProveedor;
begin
inherited;
ADevolucion := FController.GenerarDevolucion(FAlbaranes);
if Assigned(ADevolucion) then
FController.Ver(ADevolucion);
end;
procedure TfEditorAlbaranesProveedor.actGenerarDevolucionUpdate(
Sender: TObject);
begin
(Sender as TAction).Enabled := HayDatos
and not (ViewGrid.NumSeleccionados > 1)
and (Albaranes.REF_FACTURA = '')
and ViewGrid.esSeleccionCeldaDatos;
end;
procedure TfEditorAlbaranesProveedor.actGenerarFacturaExecute(Sender: TObject);
begin
inherited;
GenerarFacturaProvAlbProv(Albaranes.ID);
actRefrescar.Execute;
end;
procedure TfEditorAlbaranesProveedor.actGenerarFacturaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos
and not (ViewGrid.NumSeleccionados > 1)
and (Albaranes.REF_FACTURA = '')
and ViewGrid.esSeleccionCeldaDatos;
end;
procedure TfEditorAlbaranesProveedor.AsignarVista;
begin
ViewGrid := CreateView(TfrViewAlbaranesProveedor) as IViewAlbaranesProveedor;
end;
constructor TfEditorAlbaranesProveedor.Create(AOwner: TComponent);
begin
inherited;
FHeaderText := 'Lista de albaranes de proveedor';
FWindowCaption := FHeaderText;
AsignarVista;
end;
destructor TfEditorAlbaranesProveedor.Destroy;
begin
FAlbaranes := NIL;
FController := NIL;
inherited;
end;
procedure TfEditorAlbaranesProveedor.DuplicarInterno;
var
AAlbaran : IBizAlbaranProveedor;
begin
inherited;
AAlbaran := FController.Duplicar(Albaranes);
try
FController.Ver(AAlbaran);
finally
actRefrescar.Execute;
end;
end;
procedure TfEditorAlbaranesProveedor.EliminarInterno;
var
AAlbaranes: IBizAlbaranProveedor;
AllItems: Boolean;
begin
AAlbaranes := Nil;
AllItems := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
if AllItems then
begin
if (Application.MessageBox('<27>Desea borrar los albaranes de proveedor seleccionados?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords);
AAlbaranes := (Controller as IAlbaranesProveedorController).ExtraerSeleccionados(Albaranes) as IBizAlbaranProveedor;
end
end
else begin
if (Application.MessageBox('<27>Desea borrar el albar<61>n de proveedor seleccionado?', 'Atenci<63>n', MB_YESNO) = IDYES) then
AAlbaranes := Albaranes;
end;
if Assigned(AAlbaranes) then
begin
FController.Eliminar(AAlbaranes, AllItems);
if AllItems then
begin
if (AAlbaranes.DataTable.RecordCount > 0) then
begin
with AAlbaranes.DataTable do
begin
First;
while not EOF do
begin
JsListaAlbaranesNoEliminados.Content.Add('Ref. albar<61>n: ' + AAlbaranes.REFERENCIA + ' ' + AAlbaranes.NOMBRE);
Next;
end;
end;
JsListaAlbaranesNoEliminados.Execute;
end;
actRefrescar.Execute;
end;
end;
ViewGrid.GotoFirst;
end;
procedure TfEditorAlbaranesProveedor.FormShow(Sender: TObject);
begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Albaranes) then
raise Exception.Create('No hay ning<6E>n albar<61>n asignado');
Albaranes.DataTable.Active := True;
ViewGrid.GotoFirst;
end;
function TfEditorAlbaranesProveedor.GetController: IAlbaranesProveedorController;
begin
Result := FController;
end;
procedure TfEditorAlbaranesProveedor.ImprimirInterno;
var
Respuesta : Integer;
AAlbaranes: IBizAlbaranProveedor;
AllItems: Boolean;
begin
AAlbaranes := Nil;
AllItems := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
//Si esta agrupado solo podr<64> imprimir la lista de elementos visibles
if not ViewGrid.EsSeleccionCeldaDatos then
inherited
else
begin
Respuesta := JsImprimirDialog.Execute;
if Respuesta <> IDCANCEL then
begin
case JsImprimirDialog.CustomButtonResult of
200 : begin // Lista de elementos visibles
inherited;
end;
100 : begin // Elemento Seleccionado
if AllItems then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords);
AAlbaranes := (Controller as IAlbaranesProveedorController).ExtraerSeleccionados(Albaranes) as IBizAlbaranProveedor;
end
else
AAlbaranes := Albaranes;
if Assigned(AAlbaranes) then
FController.Print(AAlbaranes, AllItems);
end;
end;
end;
end;
end;
function TfEditorAlbaranesProveedor.GetAlbaranes: IBizAlbaranProveedor;
begin
Result := FAlbaranes;
end;
procedure TfEditorAlbaranesProveedor.ModificarInterno;
begin
inherited;
FController.Ver(Albaranes);
end;
procedure TfEditorAlbaranesProveedor.NuevoInterno;
var
Respuesta : Integer;
begin
inherited;
Respuesta := JsNuevoAlbaranDialog.Execute;
if Respuesta <> IDCANCEL then
begin
case JsNuevoAlbaranDialog.CustomButtonResult of
200 : begin // Utilizar un pedido
GenerarAlbaranProv;
actRefrescar.Execute;
end;
100 : begin // Albaran nuevo vacio
if FController.Anadir(Albaranes) then
FController.Ver(Albaranes);
end;
end;
end;
end;
procedure TfEditorAlbaranesProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Albaranes, DynWhereDataTable, Text);
if Albaranes.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorAlbaranesProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := FWindowCaption + ' - ' + AppFactuGES.EmpresaActiva.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorAlbaranesProveedor.PrevisualizarInterno;
var
Respuesta : Integer;
AAlbaranes: IBizAlbaranProveedor;
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
begin
AAlbaranes := Nil;
AllItems := False;
FImprimirPrecios := True;
FImprimirRefProveedor := True;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
//Si esta agrupado solo podr<64> imprimir la lista de elementos visibles
if not ViewGrid.EsSeleccionCeldaDatos then
inherited
else
begin
Respuesta := JsPrevisualizarDialog.Execute;
if Respuesta <> IDCANCEL then
begin
case JsPrevisualizarDialog.CustomButtonResult of
200 : begin // Lista de elementos visibles
inherited;
end;
100 : begin // Elemento Seleccionado
if AllItems then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords);
AAlbaranes := (Controller as IAlbaranesProveedorController).ExtraerSeleccionados(Albaranes) as IBizAlbaranProveedor;
end
else
AAlbaranes := Albaranes;
if Assigned(AAlbaranes) then
begin
if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
FController.Preview(AAlbaranes, AllItems, FImprimirPrecios, FImprimirRefProveedor);
end;
end;
end;
end;
end;
end;
procedure TfEditorAlbaranesProveedor.RefrescarInterno;
begin
//Volvemos a cargar los a<>os de los albaranes
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
inherited;
end;
procedure TfEditorAlbaranesProveedor.SetController(const Value: IAlbaranesProveedorController);
begin
FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
end;
procedure TfEditorAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor);
begin
FAlbaranes := Value;
if Assigned(FAlbaranes) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de a<>o))
DynWhereDataTable := FAlbaranes.DataTable.DynamicWhere.Xml;
dsDataTable.DataTable := FAlbaranes.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes;
end;
end;
end.