git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@922 0c75b7a4-871f-7646-8a2f-f78d34cc349f
332 lines
11 KiB
ObjectPascal
332 lines
11 KiB
ObjectPascal
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.
|