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/Facturas de cliente/Views/uEditorFacturasCliente.pas
2007-06-12 14:12:46 +00:00

252 lines
8.4 KiB
ObjectPascal
Raw Blame History

unit uEditorFacturasCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems,
TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls,
JvNavigationPane, uViewGrid, pngimage, JvComponentBase,
uEditorGridBase,
uBizFacturasCliente, uIEditorFacturasCliente, uFacturasClienteController,
uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
uViewFacturasCliente, JvExComCtrls, JvStatusBar, JSDialog;
type
TfEditorFacturasCliente = class(TfEditorGridBase, IEditorFacturasCliente)
frViewFacturasCliente1: TfrViewFacturasCliente;
Cambiarlasituacin1: TMenuItem;
N4: TMenuItem;
JsNuevaFacturaDialog: TJSDialog;
JsListaFacturasGeneradas: TJSDialog;
procedure FormShow(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure actModificarUpdate(Sender: TObject);
private
FFacturas: IBizFacturaCliente;
FController : IFacturasClienteController;
protected
function GetFacturas: IBizFacturaCliente;
procedure SetFacturas(const Value: IBizFacturaCliente);
function GetController : IFacturasClienteController; virtual;
procedure SetController (const Value : IFacturasClienteController); virtual;
procedure NuevoInterno; override;
procedure EliminarInterno; override;
procedure ModificarInterno; override;
procedure DuplicarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
property Controller : IFacturasClienteController read GetController write SetController;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uDataModuleFacturasCliente, uDataModuleUsuarios, uAlbaranesClienteController,
uPedidosClienteController, uBizAlbaranesCliente, uBizPedidosCliente,
uEditorBase;
{$R *.dfm}
{
*************************** TfEditorFacturasCliente ***************************
}
procedure TfEditorFacturasCliente.actEliminarUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos and
(FFacturas.SITUACION = 'PENDIENTE');
end;
procedure TfEditorFacturasCliente.actModificarUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos and
(FFacturas.SITUACION = 'PENDIENTE');
end;
constructor TfEditorFacturasCliente.Create(AOwner: TComponent);
begin
inherited;
ViewGrid := frViewFacturasCliente1; // CreateView(TfrViewFacturasCliente) as IViewFacturasCliente;
end;
destructor TfEditorFacturasCliente.Destroy;
begin
FFacturas := NIL;
inherited;
end;
procedure TfEditorFacturasCliente.DuplicarInterno;
var
AFactura : IBizFacturaCliente;
begin
inherited;
AFactura := FController.Duplicar(FFacturas);
try
FController.Ver(AFactura);
finally
actRefrescar.Execute;
end;
end;
procedure TfEditorFacturasCliente.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar esta factura de cliente?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
FController.Eliminar(Facturas);
inherited;
end;
end;
procedure TfEditorFacturasCliente.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Facturas) then
raise Exception.Create('No hay ning<6E>n presupuesto asignado');
Facturas.DataTable.Active := True;
ViewGrid.GotoFirst;
end;
function TfEditorFacturasCliente.GetController: IFacturasClienteController;
begin
Result := FController;
end;
function TfEditorFacturasCliente.GetFacturas: IBizFacturaCliente;
begin
Result := FFacturas;
end;
procedure TfEditorFacturasCliente.ImprimirInterno;
begin
inherited;
FController.Print(Facturas);
end;
procedure TfEditorFacturasCliente.ModificarInterno;
begin
inherited;
FController.Ver(Facturas);
end;
procedure TfEditorFacturasCliente.NuevoInterno;
var
Respuesta : Integer;
FPedidosClienteController : IPedidosClienteController;
APedido : IBizPedidoCliente;
FAlbaranesClienteController : IAlbaranesClienteController;
AAlbaranes : IBizAlbaranCliente;
AFacturasNuevas : IBizFacturaCliente;
i : integer;
begin
inherited;
Respuesta := JsNuevaFacturaDialog.Execute;
if Respuesta <> IDCANCEL then
begin
case JsNuevaFacturaDialog.CustomButtonResult of
300 : begin // Utilizar un pedido
ShowMessage('A COMPLETAR');
{FPedidosClienteController := TPedidosClienteController.Create;
try
APedido := FPedidosClienteController.ElegirPedidos(FPedidosClienteController.BuscarPendientes,
'Elija el pedido de cliente que desea utilizar para dar de alta la factura.'
+ #10#13 + 'Tenga en cuenta que s<>lo se podr<64>n utilizar pedidos que no tengan ning<6E>n albar<61>n ya asociado.', False);
if Assigned(APedido) then
begin
if FController.Anadir(Facturas, APedido) then
FController.Ver(Facturas);
end;
finally
FPedidosClienteController := NIL;
end;}
end;
200 : begin // Utilizar albaranes
AFacturasNuevas := FController.Nuevo;
FAlbaranesClienteController := TAlbaranesClienteController.Create;
try
AAlbaranes := FAlbaranesClienteController.ElegirAlbaranes(FAlbaranesClienteController.BuscarSinFacturar,
'Elija el albar<61>n o albaranes que desea utilizar para dar de alta el albar<61>n.'
+ #10#13 + 'Si elige albaranes de clientes diferentes se dar<61> de alta una factura por cada uno de ellos.' , True);
if Assigned(AAlbaranes) then
begin
if FController.Anadir(AFacturasNuevas, AAlbaranes) then
begin
if AFacturasNuevas.DataTable.RecordCount = 1 then
FController.Ver(AFacturasNuevas)
else begin
with JsListaFacturasGeneradas.Content do
begin
Clear;
AFacturasNuevas.DataTable.Last;
for i := 0 to AFacturasNuevas.DataTable.RecordCount - 1 do
begin
if Length(AFacturasNuevas.REFERENCIA) > 0 then
Add(AFacturasNuevas.REFERENCIA + ': ' + AFacturasNuevas.NOMBRE);
AFacturasNuevas.DataTable.Prior;
end;
end;
JsListaFacturasGeneradas.Execute;
end;
actRefrescar.Execute;
end;
end;
finally
FAlbaranesClienteController := NIL;
AFacturasNuevas := NIL;
end;
end;
100 : begin // Albaran nuevo vacio
if FController.Anadir(Facturas) then
FController.Ver(Facturas);
end;
end;
end;
end;
procedure TfEditorFacturasCliente.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Lista de facturas de cliente - ' + dmUsuarios.EmpresaActual.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorFacturasCliente.PrevisualizarInterno;
begin
inherited;
FController.Preview(Facturas);
end;
procedure TfEditorFacturasCliente.SetController(const Value: IFacturasClienteController);
begin
FController := Value;
end;
procedure TfEditorFacturasCliente.SetFacturas(const Value: IBizFacturaCliente);
begin
FFacturas := Value;
dsDataTable.DataTable := FFacturas.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewFacturasCliente).Facturas := Facturas;
end;
end.