334 lines
11 KiB
ObjectPascal
334 lines
11 KiB
ObjectPascal
|
|
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<EFBFBD>adiendo un presupuesto nuevo falla al pulsar 'ESC' sin haber
|
|||
|
|
introducido nada PERO no tiene que haber ning<EFBFBD>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.
|