This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Codigo/Modulos/Recibos de cliente2/Views/uEditorIBizRecibosCliente.pas
2007-06-12 14:12:46 +00:00

278 lines
8.4 KiB
ObjectPascal
Raw Blame History

unit uEditorFacturaCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uViewFacturaCliente, uCustomView, uViewBase, uViewTotales,
StdCtrls, pngimage, AppEvnts, JvComponentBase,
uBizFacturasCliente,
uIEditorFacturaCliente, uFacturasClienteController, uViewDetallesBase,
uViewDetallesFacturaCliente, dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar,
uViewDetallesDTO, uViewDetallesArticulos;
type
TfEditorFacturaCliente = class(TfEditorDBItem, IEditorFacturaCliente)
frViewDetallesFacturaCliente1: TfrViewDetallesFacturaCliente;
frViewFacturaCliente1: TfrViewFacturaCliente;
frViewTotales1: TfrViewTotales;
procedure FormShow(Sender: TObject);
procedure frViewClienteFactura1edtlNombrePropertiesEditValueChanged(
Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure frViewClienteFacturaedtlNombrePropertiesChange(Sender: TObject);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
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 frViewTotales1edtREPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
private
FController : IFacturasClienteController;
FFactura: IBizFacturaCliente;
FViewFactura: IViewFacturaCliente;
protected
function GetController : IFacturasClienteController;
procedure SetController (const Value : IFacturasClienteController);
function GetFactura: IBizFacturaCliente;
procedure SetFactura(const Value: IBizFacturaCliente);
function GetViewFactura: IViewFacturaCliente;
procedure SetViewFactura(const Value: IViewFacturaCliente);
property ViewFacturaCliente: IViewFacturaCliente read GetViewFactura write SetViewFactura;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IFacturasClienteController read GetController write SetController;
property Factura: IBizFacturaCliente read GetFactura write SetFactura;
constructor Create(AOwner: TComponent); override;
end;
implementation
{$R *.dfm}
uses
cxDBEdit, uBizContactos, uDataModuleUsuarios, cxControls;
{ TfEditorFacturaCliente }
{
**************************** TfEditorFacturaCliente ****************************
}
constructor TfEditorFacturaCliente.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
ViewFacturaCliente := frViewFacturaCliente1;
end;
procedure TfEditorFacturaCliente.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
dsDataTable.DataTable := NIL;
frViewTotales1.DADataSource.DataTable := NIL;
FViewFactura := NIL;
FFactura := NIL;
end;
procedure TfEditorFacturaCliente.dsDataTableDataChange(Sender: TObject;
Field: TField);
begin
inherited;
if Assigned(FFactura) and (not (FFactura.DataTable.Fetching) or
not (FFactura.DataTable.Opening) or not (FFactura.DataTable.Closing)) then
PonerTitulos;
end;
procedure TfEditorFacturaCliente.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar esta factura de cliente?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
FController.Eliminar(Factura);
inherited;
end;
end;
procedure TfEditorFacturaCliente.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewFactura) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Factura) then
raise Exception.Create('No hay ning<6E>n albar<61>n asignado');
Factura.DataTable.Active := True;
end;
procedure TfEditorFacturaCliente.frViewClienteFactura1edtlNombrePropertiesEditValueChanged(Sender: TObject);
begin
inherited;
with (Sender as TcxDBTextEdit) do
Enabled := (FFactura.ID <> 0)
end;
procedure TfEditorFacturaCliente.frViewClienteFacturaedtlNombrePropertiesChange(
Sender: TObject);
begin
inherited;
PonerTitulos;
end;
procedure TfEditorFacturaCliente.frViewTotales1edtDescuentoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
Factura.DESCUENTO := DisplayValue;
end;
procedure TfEditorFacturaCliente.frViewTotales1edtIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
Factura.IVA := DisplayValue;
end;
procedure TfEditorFacturaCliente.frViewTotales1edtREPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
Factura.RE := DisplayValue;
end;
function TfEditorFacturaCliente.GetController: IFacturasClienteController;
begin
Result := FController;
end;
function TfEditorFacturaCliente.GetFactura: IBizFacturaCliente;
begin
Result := FFactura;
end;
function TfEditorFacturaCliente.GetViewFactura: IViewFacturaCliente;
begin
Result := FViewFactura;
end;
procedure TfEditorFacturaCliente.GuardarInterno;
begin
inherited;
ShowHourglassCursor;
frViewDetallesFacturaCliente1.SaveGridStatus; // Para guardar estado del grid
frViewDetallesFacturaCliente1.BeginUpdate; // Para que no se mueva el foco
try
FController.Guardar(FFactura);
finally
frViewDetallesFacturaCliente1.EndUpdate;
frViewDetallesFacturaCliente1.RestoreGridStatus;
HideHourglassCursor;
end;
Modified := False;
end;
procedure TfEditorFacturaCliente.ImprimirInterno;
begin
inherited;
FController.Print(FFactura);
end;
procedure TfEditorFacturaCliente.pgPaginasChanging(Sender: TObject;
var AllowChange: Boolean);
begin
inherited;
if (not Assigned(FFactura))
or (FFactura.ID_CLIENTE = 0) then
begin
Showmessage('Antes debe elegir un cliente para esta factura');
AllowChange := False;
end;
end;
procedure TfEditorFacturaCliente.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(Factura) then
begin
if Factura.EsNuevo then
FTitulo := 'Nueva factura'
else
FTitulo := 'Factura' + ' - ' + FFactura.Cliente.Nombre
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')';
end;
procedure TfEditorFacturaCliente.PrevisualizarInterno;
begin
inherited;
FController.Preview(FFactura);
end;
procedure TfEditorFacturaCliente.SetController(const Value: IFacturasClienteController);
begin
FController := Value;
if Assigned(FController) then
begin
frViewFacturaCliente1.frViewClienteFactura.Controller := Controller.ClienteController;
frViewDetallesFacturaCliente1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorFacturaCliente.SetFactura(const Value: IBizFacturaCliente);
begin
FFactura := Value;
if Assigned(FFactura) then
begin
dsDataTable.DataTable := FFactura.DataTable;
frViewTotales1.DADataSource.DataTable := FFactura.DataTable;
if Assigned(FViewFactura) then
begin
frViewFacturaCliente1.frViewClienteFactura.Cliente := (Controller.ClienteController.Buscar(Factura.ID_CLIENTE) as IBizCliente);
FViewFactura.Factura := FFactura;
frViewDetallesFacturaCliente1.Detalles := FFactura.Detalles;
frViewDetallesFacturaCliente1.Factura := FFactura; //Para poder sacar los descuento del articulos segun el cliente seleccionado
end;
end;
end;
procedure TfEditorFacturaCliente.SetViewFactura(const Value: IViewFacturaCliente);
begin
FViewFactura := Value;
if Assigned(FViewFactura) and Assigned(Factura) then
FViewFactura.Factura := Factura;
end;
end.