Tecsitel_FactuGES2/Source/Modulos/Recibos de proveedor/Views/uEditorReciboProveedor.pas
2009-03-05 15:16:26 +00:00

332 lines
11 KiB
ObjectPascal
Raw Blame History

unit uEditorReciboProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, JvAppStorage, JvAppRegistryStorage, DB, uDADataTable,
JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList,
ComCtrls, JvExComCtrls, JvStatusBar, TBX, TB2Item, TB2Dock, TB2Toolbar,
pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorReciboProveedor,
uCustomView, uViewBase, uViewReciboProveedor, uRecibosProveedorController,
uBizRecibosProveedor, uViewPagosProveedor, dxLayoutLookAndFeels, cxCustomData,
uViewDetallesGenerico, uViewRecibosProvCompensados, uViewReciboProvImportes,
uDAInterfaces, cxControls, cxContainer, cxEdit, cxLabel;
type
TfEditorReciboProveedor = class(TfEditorDBItem, IEditorReciboProveedor)
DADataSource1: TDADataSource;
frViewReciboProveedor1: TfrViewReciboProveedor;
pagPagos: TTabSheet;
pagCompensados: TTabSheet;
frViewPagosProveedor1: TfrViewPagosProveedor;
frViewRecibosProvCompensados1: TfrViewRecibosProvCompensados;
frViewReciboProvImportes1: TfrViewReciboProvImportes;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure frViewReciboProveedor1eImportePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewPagosProveedor1actAnadirExecute(Sender: TObject);
procedure frViewPagosProveedor1actEliminarExecute(Sender: TObject);
procedure frViewPagosProveedor1actEliminarUpdate(Sender: TObject);
procedure frViewPagosProveedor1actModificarUpdate(Sender: TObject);
procedure frViewPagosProveedor1actModificarExecute(Sender: TObject);
procedure HabilitarRecibo;
procedure DeshabilitarRecibo;
procedure JvFormStorageRestorePlacement(Sender: TObject);
procedure JvFormStorageSavePlacement(Sender: TObject);
procedure frViewReciboProvImportes1eImportePropertiesEditValueChanged(Sender: TObject);
procedure frViewRecibosProvCompensados1cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary);
private
FController : IRecibosProveedorController;
FRecibo: IBizRecibosProveedor;
FViewRecibo : IViewReciboProveedor;
FImporteRestante : Double;
function GetController : IRecibosProveedorController;
procedure SetController (const Value : IRecibosProveedorController); virtual;
function GetRecibo: IBizRecibosProveedor;
procedure SetRecibo(const Value: IBizRecibosProveedor);
function GetViewRecibo: IViewReciboProveedor;
procedure SetViewRecibo(const Value: IViewReciboProveedor);
property ViewRecibo: IViewReciboProveedor read GetViewRecibo write SetViewRecibo;
procedure CalcularTotal;
protected
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure GuardarInterno; override;
procedure PonerTitulos(const ATitulo: string = ''); override;
public
property Recibo: IBizRecibosProveedor read GetRecibo write SetRecibo;
constructor Create(AOwner: TComponent); override;
end;
implementation
uses schRecibosProveedorClient_Intf, uEditorFechaPagoProveedor, uEditorBase, uFactuGES_App;
{$R *.dfm}
procedure TfEditorReciboProveedor.CalcularTotal;
var
ImporteAux: Double;
begin
ImporteAux := 0;
if not VarIsNull(frViewRecibosProvCompensados1.cxGridView.DataController.Summary.FooterSummaryValues[0]) then
ImporteAux := frViewRecibosProvCompensados1.cxGridView.DataController.Summary.FooterSummaryValues[0];
frViewReciboProvImportes1.eImporteTotalRecibo.Value := frViewReciboProvImportes1.eImporte.Value + frViewReciboProvImportes1.eOtrosGastos.Value + ImporteAux;
end;
constructor TfEditorReciboProveedor.Create(AOwner: TComponent);
begin
inherited;
FImporteRestante := 0;
pgPaginas.ActivePageIndex := 0;
ViewRecibo := frViewReciboProveedor1;
end;
procedure TfEditorReciboProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
dsDataTable.DataTable := NIL;
FViewRecibo := NIL;
FRecibo := NIL;
end;
procedure TfEditorReciboProveedor.DeshabilitarRecibo;
begin
frViewReciboProveedor1.eReferenciaProveedor.Enabled := False;
frViewReciboProveedor1.edtFechaVencimiento.Enabled := False;
frViewReciboProvImportes1.eImporte.Enabled := False;
frViewReciboProvImportes1.eOtrosGastos.Enabled := False;
end;
procedure TfEditorReciboProveedor.dsDataTableDataChange(Sender: TObject; Field: TField);
begin
inherited;
if Assigned(FRecibo) and (not (FRecibo.DataTable.Fetching) or
not (FRecibo.DataTable.Opening) or not (FRecibo.DataTable.Closing)) then
PonerTitulos;
end;
procedure TfEditorReciboProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewRecibo) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Recibo) then
raise Exception.Create('No hay ning<6E>n almac<61>n asignado');
Recibo.DataTable.Active := True;
end;
procedure TfEditorReciboProveedor.frViewPagosProveedor1actAnadirExecute(Sender: TObject);
begin
inherited;
//En el caso de haber a<>adido el pago del recibo ya no podremos modificarlo
if FController.AnadirPago(Recibo) then
DeshabilitarRecibo
//Podremos modificar si anulamos el pago mediante una devoluci<63>n
else
HabilitarRecibo;
end;
procedure TfEditorReciboProveedor.frViewPagosProveedor1actEliminarExecute(Sender: TObject);
begin
inherited;
//En el caso de eliminar un pago el recibo queda como devuelto o pendiente y por tanto se puede modificar
if (FController.EliminarPago(Recibo)) then
begin
FRecibo.Edit;
if FRecibo.Pagos.DataTable.RecordCount > 0 then
FRecibo.SITUACION := CTE_DEVUELTO
else
FRecibo.SITUACION := CTE_PENDIENTE;
HabilitarRecibo;
end
//No podremos modificar si anulamos una devoluci<63>n porque el recibo queda cobrado
else
begin
FRecibo.Edit;
FRecibo.SITUACION := CTE_PAGADO;
DeshabilitarRecibo;
end;
end;
procedure TfEditorReciboProveedor.frViewPagosProveedor1actEliminarUpdate(Sender: TObject);
begin
if Assigned(FRecibo) and Assigned(FRecibo.Pagos) then
frViewPagosProveedor1.actEliminar.Enabled := (FRecibo.Pagos.DataTable.RecordCount > 0)
end;
procedure TfEditorReciboProveedor.frViewPagosProveedor1actModificarExecute(Sender: TObject);
begin
inherited;
FController.ModificarPago(Recibo);
end;
procedure TfEditorReciboProveedor.frViewPagosProveedor1actModificarUpdate(Sender: TObject);
begin
inherited;
if Assigned(FRecibo) and Assigned(FRecibo.Pagos) then
frViewPagosProveedor1.actModificar.Enabled := (FRecibo.Pagos.DataTable.RecordCount > 0);
end;
procedure TfEditorReciboProveedor.frViewReciboProvImportes1eImportePropertiesEditValueChanged(
Sender: TObject);
begin
inherited;
CalcularTotal;
end;
procedure TfEditorReciboProveedor.frViewReciboProveedor1eImportePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (DisplayValue > frViewReciboProvImportes1.eImporte.DataBinding.Field.Value) then
begin
DisplayValue := frViewReciboProvImportes1.eImporte.DataBinding.Field.Value;
ErrorText := 'El importe debe ser menor o igual que el actual';
Error := True;
end;
end;
procedure TfEditorReciboProveedor.frViewRecibosProvCompensados1cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary);
begin
inherited;
CalcularTotal;
end;
function TfEditorReciboProveedor.GetController: IRecibosProveedorController;
begin
Result := FController;
end;
function TfEditorReciboProveedor.GetRecibo: IBizRecibosProveedor;
begin
Result := FRecibo;
end;
function TfEditorReciboProveedor.GetViewRecibo: IViewReciboProveedor;
begin
Result := FViewRecibo;
end;
procedure TfEditorReciboProveedor.GuardarInterno;
begin
inherited;
FController.Guardar(FRecibo);
Modified := False;
end;
procedure TfEditorReciboProveedor.HabilitarRecibo;
begin
//Si el recibo tiene sociado una remesa no se podr<64> cambiar nada
frViewReciboProveedor1.eReferenciaProveedor.Enabled := True;
frViewReciboProveedor1.edtFechaVencimiento.Enabled := True;
frViewReciboProvImportes1.eImporte.Enabled := True;
frViewReciboProvImportes1.eOtrosGastos.Enabled := True;
end;
procedure TfEditorReciboProveedor.ImprimirInterno;
begin
{
inherited;
FController.Print(FRecibo);
}
end;
procedure TfEditorReciboProveedor.JvFormStorageRestorePlacement(Sender: TObject);
begin
inherited;
frViewPagosProveedor1.ListaPagosProveedor.ActiveView.RestoreFromRegistry(JvAppRegistryStorage.Root);
end;
procedure TfEditorReciboProveedor.JvFormStorageSavePlacement(Sender: TObject);
begin
inherited;
frViewPagosProveedor1.ListaPagosProveedor.ActiveView.StoreToRegistry(JvAppRegistryStorage.Root);
end;
procedure TfEditorReciboProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
if Assigned(Recibo) then
begin
if Recibo.EsNuevo then
FTitulo := 'Nuevo recibo de proveedor'
else
FTitulo := 'Recibo de proveedor';
end;
if (Recibo.ID_RECIBO_COMPENSADO > 0) then
FTitulo := FTitulo + ' (compensado)';
if Length(Recibo.NOMBRE_PROVEEDOR) > 0 then
FTitulo := FTitulo + ' - ' + Recibo.NOMBRE_PROVEEDOR;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorReciboProveedor.PrevisualizarInterno;
begin
{
inherited;
FController.Preview(FRecibo);
}
end;
procedure TfEditorReciboProveedor.SetController(const Value: IRecibosProveedorController);
begin
FController := Value;
if Assigned(FController) then
frViewRecibosProvCompensados1.Controller := FController;
// (ViewRecibo as IViewReciboProveedor).Controller := (FController as IRecibosProveedorController);
end;
procedure TfEditorReciboProveedor.SetRecibo(const Value: IBizRecibosProveedor);
begin
FRecibo := Value;
dsDataTable.DataTable := FRecibo.DataTable;
if Assigned(FViewRecibo) and Assigned(Recibo) then
begin
FViewRecibo.Recibo := Recibo;
frViewPagosProveedor1.Pagos := Recibo.Pagos;
frViewRecibosProvCompensados1.ReciboProveedor := FRecibo;
if (FRecibo.SITUACION = CTE_PAGADO) then
DeshabilitarRecibo
else
HabilitarRecibo;
end;
end;
procedure TfEditorReciboProveedor.SetViewRecibo(const Value: IViewReciboProveedor);
begin
FViewRecibo := Value;
if Assigned(FViewRecibo) and Assigned(Recibo) then
FViewRecibo.Recibo := Recibo;
end;
end.