Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas
2008-08-12 14:02:15 +00:00

417 lines
13 KiB
ObjectPascal
Raw Blame History

unit uEditorPresupuestosCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
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,
uBizPresupuestosCliente, uIEditorPresupuestosCliente, uPresupuestosClienteController,
uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
uViewPresupuestosCliente, JvExComCtrls, JvStatusBar, JSDialog, StdCtrls,
uDAInterfaces;
type
TfEditorPresupuestosCliente = class(TfEditorGridBase, IEditorPresupuestosCliente)
actGenerarAlbaranCli: TAction;
actGenerarFactura: TAction;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXSeparatorItem17: TTBXSeparatorItem;
TBXItem38: TTBXItem;
TBXItem39: TTBXItem;
N4: TMenuItem;
Generar2: TMenuItem;
JsGenerarDialog: TJSDialog;
JsPrevisualizarDialog: TJSDialog;
JsImprimirDialog: TJSDialog;
TBXItem40: TTBXItem;
JsListaPresupuestosNoEliminados: TJSDialog;
actGenerarCertificado: TAction;
TBXItem41: TTBXItem;
TBXItem42: TTBXItem;
Generarcertificado1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure actGenerarAlbaranCliExecute(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure actGenerarFacturaUpdate(Sender: TObject);
procedure actGenerarFacturaExecute(Sender: TObject);
procedure actGenerarPresupuestoProvExecute(Sender: TObject);
procedure actGenerarExecute(Sender: TObject);
procedure actGenerarCertificadoUpdate(Sender: TObject);
procedure actGenerarCertificadoExecute(Sender: TObject);
protected
FPresupuestos: IBizPresupuestoCliente;
FController : IPresupuestosClienteController;
function GetPresupuestos: IBizPresupuestoCliente;
procedure SetPresupuestos(const Value: IBizPresupuestoCliente);
function GetController : IPresupuestosClienteController; virtual;
procedure SetController (const Value : IPresupuestosClienteController); virtual;
procedure NuevoInterno; override;
procedure ModificarInterno; override;
procedure EliminarInterno; override;
procedure DuplicarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; 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 Presupuestos: IBizPresupuestoCliente read GetPresupuestos write SetPresupuestos;
property Controller : IPresupuestosClienteController read GetController write SetController;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uDataModulePresupuestosCliente, uDataModuleUsuarios, uFactuGES_App,
uEditorBase, uEditorDBBase, uDialogUtils,
uDBSelectionListUtils, uGridStatusUtils,
uGenerarFacturasCliPreCliUtils,
// uBizAlbaranesCliente, uAlbaranesClienteController,
// uFacturasClienteController, uBizFacturasCliente,
uGenerarAlbaranesCliUtils;
{$R *.dfm}
{
*************************** TfEditorPresupuestosCliente ***************************
}
procedure TfEditorPresupuestosCliente.actEliminarUpdate(Sender: TObject);
begin
inherited;
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := (FPresupuestos.SITUACION = SITUACION_PRESUPUESTO_PENDIENTE);
end;
procedure TfEditorPresupuestosCliente.actGenerarAlbaranCliExecute(Sender: TObject);
begin
inherited;
GenerarAlbaranCli(FPresupuestos.ID);
end;
procedure TfEditorPresupuestosCliente.actGenerarCertificadoExecute(
Sender: TObject);
var
APresupuestos: IBizPresupuestoCliente;
AllItems: Boolean;
ATexto : String;
begin
APresupuestos := Nil;
AllItems := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
if AllItems then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
ATexto := 'Se han generado los certificados de trabajos.';
end
else begin
APresupuestos := Presupuestos;
ATexto := 'Se ha generado el certificado de trabajos.';
end;
if Assigned(APresupuestos) then
if FController.GenerarCertificados(APresupuestos, AllItems) then
ShowInfoMessage('Generar certificado de trabajo', ATexto)
end;
procedure TfEditorPresupuestosCliente.actGenerarCertificadoUpdate(
Sender: TObject);
begin
(Sender as TAction).Enabled := HayDatos
and ViewGrid.EsSeleccionCeldaDatos
and (FPresupuestos.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO);
end;
procedure TfEditorPresupuestosCliente.actGenerarExecute(Sender: TObject);
//var
// Respuesta : Integer;
begin
inherited;
{
Respuesta := JsGenerarDialog.Execute;
if Respuesta <> IDCANCEL then
begin
case JsGenerarDialog.CustomButtonResult of
200 : begin // Generar factura de cliente
actGenerarFactura.Execute;
end;
100 : begin // Generar albaran de cliente
// actGenerarAlbaranCli.Execute;
end;
end;
actRefrescar.Execute;
end;
}
end;
procedure TfEditorPresupuestosCliente.actGenerarFacturaExecute(Sender: TObject);
begin
inherited;
if (ShowConfirmMessage('Generar factura', Format('<27>Desea copiar todos los conceptos del presupuesto %s a la factura?', [Presupuestos.REFERENCIA])) = IDYES) then
GenerarFacturaCliPre(Presupuestos.ID)
else
GenerarFacturaCliPre(Presupuestos.ID, False);
actRefrescar.Execute;
end;
procedure TfEditorPresupuestosCliente.actGenerarFacturaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos
and not (ViewGrid.NumSeleccionados > 1)
and (FPresupuestos.FACTURA = '')
and ViewGrid.esSeleccionCeldaDatos
and (FPresupuestos.SITUACION = SITUACION_PRESUPUESTO_ACEPTADO);
end;
procedure TfEditorPresupuestosCliente.actGenerarPresupuestoProvExecute(Sender: TObject);
begin
inherited;
// GenerarPresupuestosProv(FPresupuestos);
end;
procedure TfEditorPresupuestosCliente.AsignarVista;
begin
ViewGrid := CreateView(TfrViewPresupuestosCliente) as IViewPresupuestosCliente;
end;
constructor TfEditorPresupuestosCliente.Create(AOwner: TComponent);
begin
inherited;
AsignarVista;
end;
destructor TfEditorPresupuestosCliente.Destroy;
begin
FPresupuestos := NIL;
FController := NIL;
inherited;
end;
procedure TfEditorPresupuestosCliente.DuplicarInterno;
var
APresupuesto : IBizPresupuestoCliente;
begin
inherited;
APresupuesto := FController.Duplicar(Presupuestos);
try
FController.Ver(APresupuesto);
finally
actRefrescar.Execute;
end;
end;
procedure TfEditorPresupuestosCliente.EliminarInterno;
var
APresupuestos: IBizPresupuestoCliente;
AllItems: Boolean;
begin
APresupuestos := Nil;
AllItems := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
if AllItems then
begin
if (Application.MessageBox('<27>Desea borrar los presupuestos seleccionados?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
end
end
else begin
if (Application.MessageBox('<27>Desea borrar el presupuesto seleccionado?', 'Atenci<63>n', MB_YESNO) = IDYES) then
APresupuestos := Presupuestos;
end;
if Assigned(APresupuestos) then
begin
FController.Eliminar(APresupuestos, AllItems);
if AllItems then
begin
if (APresupuestos.DataTable.RecordCount > 0) then
begin
with APresupuestos.DataTable do
begin
First;
while not EOF do
begin
// JsListaPresupuestosNoEliminados.Content.Add('Ref. Presupuesto: ' + APresupuestos.REFERENCIA + ' ' + APresupuestos.NOMBRE);
Next;
end;
end;
JsListaPresupuestosNoEliminados.Execute;
end;
actRefrescar.Execute;
end;
end;
ViewGrid.GotoFirst;
end;
procedure TfEditorPresupuestosCliente.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Presupuestos) then
raise Exception.Create('No hay ning<6E>n Presupuesto asignado');
Presupuestos.DataTable.Active := True;
ViewGrid.GotoFirst;
end;
function TfEditorPresupuestosCliente.GetController: IPresupuestosClienteController;
begin
Result := FController;
end;
function TfEditorPresupuestosCliente.GetPresupuestos: IBizPresupuestoCliente;
begin
Result := FPresupuestos;
end;
procedure TfEditorPresupuestosCliente.ImprimirInterno;
var
Respuesta : Integer;
APresupuestos: IBizPresupuestoCliente;
AllItems: Boolean;
begin
APresupuestos := 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, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
end
else
APresupuestos := Presupuestos;
if Assigned(APresupuestos) then
FController.Print(APresupuestos, AllItems);
end;
end;
end;
end;
end;
procedure TfEditorPresupuestosCliente.ModificarInterno;
begin
inherited;
FController.Ver(Presupuestos);
end;
procedure TfEditorPresupuestosCliente.NuevoInterno;
begin
inherited;
if FController.Anadir(Presupuestos) then
FController.Ver(Presupuestos);
end;
procedure TfEditorPresupuestosCliente.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Lista de presupuestos de cliente - ' + AppFactuGES.EmpresaActiva.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorPresupuestosCliente.PrevisualizarInterno;
var
Respuesta : Integer;
APresupuestos: IBizPresupuestoCliente;
AllItems: Boolean;
begin
APresupuestos := 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 := 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, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
end
else
APresupuestos := Presupuestos;
if Assigned(APresupuestos) then
FController.Preview(APresupuestos, AllItems);
end;
end;
end;
end;
APresupuestos := Nil;
end;
procedure TfEditorPresupuestosCliente.SetController(const Value: IPresupuestosClienteController);
begin
FController := Value;
end;
procedure TfEditorPresupuestosCliente.SetPresupuestos(const Value: IBizPresupuestoCliente);
begin
FPresupuestos := Value;
dsDataTable.DataTable := FPresupuestos.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewPresupuestosCliente).Presupuestos := Presupuestos;
end;
end.