ConstruccionesCNJ_FactuGES/Modulos/Presupuestos/Views/uEditorPresupuesto.pas
2007-06-21 15:50:59 +00:00

334 lines
11 KiB
ObjectPascal
Raw Blame History

unit uEditorPresupuesto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX,
TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, uEditorDBItem, DB, uDADataTable, uBizPresupuestos,
uViewPresupuesto, uCustomView, uViewBase, uViewTotales, uViewGrid,
TBXDkPanels, ExtCtrls, uDAScriptingProvider,
uDACDSDataTable, JvAppStorage, JvAppRegistryStorage,
JvFormPlacement, pngimage, StdCtrls, Mask, DBCtrls, JvComponentBase,
uIEditorPresupuesto, uPresupuestosController, uViewDetallesBase,
uViewDetallesPresupuesto, dxLayoutLookAndFeels, uViewDatosYSeleccionCliente,
JvExComCtrls, JvStatusBar;
type
TfEditorPresupuesto = class(TfEditorDBItem, IEditorPresupuesto)
pagContenido: TTabSheet;
frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto;
frViewTotales1: TfrViewTotales;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewPresupuesto1: TfrViewPresupuesto;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure frViewTotales1edtDescuentoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1edtIVAPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewClientePresupuesto1edtlNombrePropertiesChange(
Sender: TObject);
procedure OnSituacionEditValueChanged(Sender: TObject);
private
FController : IPresupuestosController;
FPresupuesto : IBizPresupuesto;
FViewPresupuesto : IViewPresupuesto;
// FViewDocumentosPresupuesto : IViewDocumentosAsociados;
protected
function GetController : IPresupuestosController;
procedure SetController (const Value : IPresupuestosController);
function GetPresupuesto: IBizPresupuesto;
procedure SetPresupuesto(const Value: IBizPresupuesto);
function GetViewPresupuesto: IViewPresupuesto;
procedure SetViewPresupuesto(const Value: IViewPresupuesto);
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
property ViewPresupuesto: IViewPresupuesto read GetViewPresupuesto write
SetViewPresupuesto;
procedure OnContactoChanged(Sender : TObject);
//DOCUMENTOS ASOCIADOS
// function GetViewDocumentosPresupuesto: IViewDocumentosAsociados;
// procedure SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados);
// property ViewDocumentosPresupuesto: IViewDocumentosAsociados read GetViewDocumentosPresupuesto write
// SetViewDocumentosPresupuesto;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IPresupuestosController read GetController write SetController;
property Presupuesto: IBizPresupuesto read GetPresupuesto write SetPresupuesto;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
DateUtils, schPresupuestosClient_Intf, cxDBEdit,
uBizContactos, uDataModuleUsuarios, uDataModulePresupuestos;
{ TfEditorPresupuesto }
function TfEditorPresupuesto.GetController: IPresupuestosController;
begin
Result := FController;
end;
function TfEditorPresupuesto.GetPresupuesto: IBizPresupuesto;
begin
Result := FPresupuesto;
end;
function TfEditorPresupuesto.GetViewPresupuesto: IViewPresupuesto;
begin
Result := FViewPresupuesto;
end;
procedure TfEditorPresupuesto.GuardarInterno;
begin
inherited;
if (FPresupuesto.SITUACION = SITUACION_PENDIENTE) and
(DateOf(FPresupuesto.FECHA_PRESUPUESTO) < DateOf(Now)) then
begin
if (MessageDlg('Ha realizado modificaciones en este presupuesto' + #10#13 +
'y la fecha del presupuesto es antigua. <20>Desea actualizarla a d<>a de hoy?' + #10#13 +
'(La nueva fecha de validez del presupuesto se calcular<61> autom<6F>ticamente)',
mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
FPresupuesto.Edit;
FPresupuesto.FECHA_PRESUPUESTO := DateOf(Now);
FPresupuesto.Post;
end;
end;
FController.Guardar(FPresupuesto);
Modified := False;
end;
procedure TfEditorPresupuesto.ImprimirInterno;
begin
inherited;
FController.Print(FPresupuesto);
end;
procedure TfEditorPresupuesto.OnContactoChanged(Sender: TObject);
begin
FPresupuesto.Cliente := frViewPresupuesto1.frViewClientePresupuesto1.Cliente;
end;
procedure TfEditorPresupuesto.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FPresupuesto) then
begin
if FPresupuesto.EsNuevo then
FTitulo := 'Nuevo presupuesto'
else
FTitulo := 'Presupuesto' + ' - ' + FPresupuesto.Cliente.Nombre
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')';
end;
procedure TfEditorPresupuesto.PrevisualizarInterno;
begin
inherited;
FController.Preview(FPresupuesto);
end;
procedure TfEditorPresupuesto.SetController(const Value: IPresupuestosController);
begin
FController := Value;
if Assigned(FController) then
begin
frViewPresupuesto1.frViewClientePresupuesto1.Controller := Controller.ClienteController;
frViewDetallesPresupuesto1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorPresupuesto.SetPresupuesto(const Value: IBizPresupuesto);
begin
FPresupuesto := Value;
if Assigned(FPresupuesto) then
begin
dsDataTable.DataTable := FPresupuesto.DataTable;
frViewTotales1.DADataSource.DataTable := FPresupuesto.DataTable;
if Assigned(FViewPresupuesto) then
begin
FViewPresupuesto.Presupuesto := Presupuesto;
frViewPresupuesto1.frViewClientePresupuesto1.Cliente := Presupuesto.Cliente;//(Controller.ClienteController.Buscar(Presupuesto.ID_CLIENTE) as IBizCliente);
frViewPresupuesto1.frViewClientePresupuesto1.OnClienteChanged := OnContactoChanged;
frViewDetallesPresupuesto1.Detalles := FPresupuesto.Detalles;
end;
//DOCUMENTOS ASOCIADOS
{ if Assigned(FViewDocumentosPresupuesto) then
begin
FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosAsociados).GestorDocumentos;
FViewDocumentosPresupuesto.GestorDocumentos.ModoInsert := (Presupuesto.DataTable.State = dsInsert);
end;
}
Presupuesto.DataTable.Active := True;
end;
end;
procedure TfEditorPresupuesto.SetViewPresupuesto(
const Value: IViewPresupuesto);
begin
FViewPresupuesto := Value;
if Assigned(FViewPresupuesto) and Assigned(Presupuesto) then
FViewPresupuesto.Presupuesto := Presupuesto;
end;
procedure TfEditorPresupuesto.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewPresupuesto) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Presupuesto) then
raise Exception.Create('No hay ning<6E>n presupuesto asignado');
//DOCUMENTOS ASOCIADOS
//En el caso de no existir el gestor de documentos no habilitamos la vista
{ if Assigned(Presupuesto.GestorDocumentos) then
begin
ViewDocumentosPresupuesto := CreateView(TfrViewDocumentosAsociados) as IViewDocumentosAsociados;
ViewDocumentosPresupuesto.ShowEmbedded(pagPlanos);
end
else
pagPlanos.TabVisible := False;
}
pgPaginas.ActivePage := pagGeneral;
frViewPresupuesto1.cbSituacion.Properties.OnEditValueChanged := OnSituacionEditValueChanged;
end;
procedure TfEditorPresupuesto.frViewClientePresupuesto1edtlNombrePropertiesChange(
Sender: TObject);
begin
inherited;
PonerTitulos;
end;
procedure TfEditorPresupuesto.OnSituacionEditValueChanged(Sender: TObject);
begin
inherited;
if (csDestroying in ComponentState) then
Exit;
{ ATENCION! A<>adiendo un presupuesto nuevo falla al pulsar 'ESC' sin haber
introducido nada PERO no tiene que haber ning<6E>n presupuesto en la empresa.
Error: StartChange has already been called; cannot log more than one change at a time.
}
// FController.CambiarSituacion(FPresupuesto, VarToStr((Sender as TcxDBComboBox).EditValue), Date, False);
end;
procedure TfEditorPresupuesto.frViewTotales1edtDescuentoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FPresupuesto.DESCUENTO := DisplayValue;
end;
procedure TfEditorPresupuesto.frViewTotales1edtIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FPresupuesto.IVA := DisplayValue;
end;
constructor TfEditorPresupuesto.Create(AOwner: TComponent);
begin
inherited;
FViewPresupuesto := NIL;
FPresupuesto := NIL;
pgPaginas.ActivePageIndex := 0;
ViewPresupuesto := frViewPresupuesto1;
//DOCUMENTOS ASOCIADOS
// FViewDocumentosPresupuesto := Nil;
end;
procedure TfEditorPresupuesto.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
frViewPresupuesto1.cbSituacion.Properties.OnEditValueChanged := Nil;
dsDataTable.DataTable := NIL;
frViewTotales1.DADataSource.DataTable := NIL;
FViewPresupuesto := NIL;
FPresupuesto := NIL;
end;
destructor TfEditorPresupuesto.Destroy;
begin
// Utilizar mejor OnClose;
//DOCUMENTOS ASOCIADOS
// FViewDocumentosPresupuesto := NIL;
inherited;
end;
procedure TfEditorPresupuesto.dsDataTableDataChange(Sender: TObject;
Field: TField);
begin
inherited;
if Assigned(FPresupuesto) and (not (FPresupuesto.DataTable.Fetching) or
not (FPresupuesto.DataTable.Opening) or not (FPresupuesto.DataTable.Closing)) then
PonerTitulos;
end;
procedure TfEditorPresupuesto.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar este presupuesto?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
FController.Eliminar(Presupuesto);
inherited;
end
end;
{
function TfEditorPresupuesto.GetViewDocumentosPresupuesto: IViewDocumentosAsociados;
begin
Result := FViewDocumentosPresupuesto;
end;
procedure TfEditorPresupuesto.SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados);
begin
FViewDocumentosPresupuesto := Value;
if Assigned(FViewDocumentosPresupuesto) and Assigned(Presupuesto) then
FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosASociados).GestorDocumentos;
end;
}
end.