Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestoCliente.pas

246 lines
8.9 KiB
ObjectPascal
Raw Normal View History

unit uViewPresupuestoCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, uBizPresupuestosCliente, DB, uDADataTable, uCustomView,
AppEvnts, StdCtrls, Mask, DBCtrls,
uViewObservaciones, uViewDatosYSeleccionCliente,
cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit,
cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo,
uViewDireccionEntregaPresupuestoCliente, Buttons, ActnList, cxLookupEdit,
cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, uDAInterfaces,
uBizFormasPago, cxButtonEdit;
type
IViewPresupuestoCliente = interface(IViewBase)
['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}']
function GetPresupuesto: IBizPresupuestoCliente;
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;
function GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente;
procedure SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente);
property ViewClientePresupuesto: TfrViewDatosYSeleccionCliente read GetViewClientePresupuesto write SetViewClientePresupuesto;
end;
TfrViewPresupuestoCliente = class(TfrViewBase, IViewPresupuestoCliente)
DADataSource: TDADataSource;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item2: TdxLayoutItem;
edtFechaPresupuesto: TcxDBDateEdit;
dxLayoutControl1Group1: TdxLayoutGroup;
dxLayoutControl1Group2: TdxLayoutGroup;
dxLayoutControl1Item6: TdxLayoutItem;
memObservaciones: TcxDBMemo;
dxLayoutControl1Item3: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControl1Group7: TdxLayoutGroup;
dxLayoutControl1Item1: TdxLayoutItem;
frViewClientePresupuesto: TfrViewDatosYSeleccionCliente;
ActionList1: TActionList;
actElegirDireccion: TAction;
dxLayoutControl1Item4: TdxLayoutItem;
cbFormaPago: TcxDBLookupComboBox;
dxLayoutControl1Item5: TdxLayoutItem;
bFormasPago: TButton;
dxLayoutControl1Group5: TdxLayoutGroup;
dsFormaPago: TDADataSource;
dxLayoutControl1Group10: TdxLayoutGroup;
dxLayoutControl1Item7: TdxLayoutItem;
edtFechaDecision: TcxDBDateEdit;
dxLayoutControl1Item15: TdxLayoutItem;
eRefCliente: TcxDBTextEdit;
dxLayoutControl1Item8: TdxLayoutItem;
cbClienteFinal: TcxDBButtonEdit;
cbSituacion: TcxDBImageComboBox;
dxLayoutControl1Item10: TdxLayoutItem;
dxLayoutControl1Item9: TdxLayoutItem;
eReferenciaAux: TcxDBTextEdit;
dxLayoutControl1Group3: TdxLayoutGroup;
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure actElegirDireccionExecute(Sender: TObject);
procedure actElegirDireccionUpdate(Sender: TObject);
procedure bFormasPagoClick(Sender: TObject);
procedure frViewClientePresupuestoButton1Click(Sender: TObject);
procedure frViewClientePresupuestoButton2Click(Sender: TObject);
procedure cbClienteFinalPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
protected
FPresupuesto : IBizPresupuestoCliente;
FFormasPago : IBizFormaPago;
FFormasPagoController : IFormasPagoController;
FViewClientePresupuesto : TfrViewDatosYSeleccionCliente;
function GetPresupuesto: IBizPresupuestoCliente;
procedure SetPresupuesto(const Value: IBizPresupuestoCliente); virtual;
function GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente;
procedure SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente);
public
property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;
property ViewClientePresupuesto: TfrViewDatosYSeleccionCliente read GetViewClientePresupuesto;
end;
implementation
{$R *.dfm}
{ TfrViewPresupuestoCliente }
uses
uClientesController, uBizContactos, uBizDireccionesContacto,
uPresupuestosClienteController;
procedure TfrViewPresupuestoCliente.actElegirDireccionExecute(Sender: TObject);
var
AClientesController : IClientesController;
APresupuestoController : IPresupuestosClienteController;
ADireccion : IBizDireccionesContacto;
begin
inherited;
AClientesController := TClientesController.Create;
APresupuestoController := TPresupuestosClienteController.Create;
try
ADireccion := AClientesController.ElegirDireccionEntrega(FPresupuesto.Cliente.Direcciones,
'Seleccione la direcci<63>n del cliente que quiere utilizar como direcci<63>n de envio de este presupuesto.');
if Assigned(ADireccion) then
begin
APresupuestoController.CopiarDireccionEnvio(ADireccion, FPresupuesto);
FPresupuesto.Edit;
FPresupuesto.IMPORTE_PORTE := ADireccion.PORTE;
end;
finally
AClientesController := NIL;
APresupuestoController := NIL;
end;
end;
procedure TfrViewPresupuestoCliente.actElegirDireccionUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (not ReadOnly) and
Assigned(FPresupuesto) and
Assigned(FViewClientePresupuesto) and
FPresupuesto.DataTable.Active and
Assigned(FPresupuesto.Cliente) and
Assigned(FPresupuesto.Cliente) and
Assigned(FPresupuesto.Cliente.Direcciones) and
FPresupuesto.Cliente.Direcciones.DataTable.Active and
(FPresupuesto.Cliente.Direcciones.DataTable.RecordCount > 0);
end;
procedure TfrViewPresupuestoCliente.bFormasPagoClick(Sender: TObject);
begin
inherited;
if Assigned(FFormasPago) then
FFormasPagoController.VerTodos(FFormasPago);
end;
procedure TfrViewPresupuestoCliente.cbClienteFinalPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
var
ACliente : IBizCliente;
AClienteController : IClientesController;
begin
inherited;
AClienteController := TClientesController.Create;
try
ACliente := (AClienteController.ElegirContacto(AClienteController.BuscarTodos,
'Elija el cliente final de este presupuesto', False) as IBizCliente);
if Assigned(ACliente) then
begin
ShowHourglassCursor;
try
Presupuesto.Edit;
Presupuesto.CLIENTE_FINAL := ACliente.NOMBRE;
finally
HideHourglassCursor;
end;
end;
finally
ACliente := NIL;
AClienteController := NIL;
end;
end;
procedure TfrViewPresupuestoCliente.CustomViewCreate(Sender: TObject);
begin
inherited;
FFormasPago := Nil;
FFormasPagoController := TFormasPagoController.Create;
FViewClientePresupuesto := frViewClientePresupuesto;
FViewClientePresupuesto.MsgElegirCliente := 'Elija el cliente al que se le realizar<61> el presupuesto.';
end;
procedure TfrViewPresupuestoCliente.CustomViewDestroy(Sender: TObject);
begin
FFormasPago := Nil;
FFormasPagoController := NIL;
FViewClientePresupuesto := NIL;
inherited;
end;
procedure TfrViewPresupuestoCliente.frViewClientePresupuestoButton1Click(Sender: TObject);
begin
if Assigned(Presupuesto) and Assigned(Presupuesto.Cliente) and
Assigned (Presupuesto.Detalles) and (Presupuesto.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Los descuentos de los art<72>culos del presupuesto ser<65>n actualizados con los del nuevo cliente seleccionado, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewClientePresupuesto.actElegirContacto.Execute;
end;
procedure TfrViewPresupuestoCliente.frViewClientePresupuestoButton2Click(Sender: TObject);
begin
if Assigned(Presupuesto) and Assigned(Presupuesto.Cliente) and
Assigned (Presupuesto.Detalles) and (Presupuesto.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Los descuentos de los art<72>culos del presupuesto ser<65>n actualizados con los del nuevo cliente seleccionado, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewClientePresupuesto.actAnadirContacto.Execute;
end;
function TfrViewPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente;
begin
Result := FPresupuesto;
end;
function TfrViewPresupuestoCliente.GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente;
begin
Result := FViewClientePresupuesto;
end;
procedure TfrViewPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
begin
FPresupuesto := Value;
if Assigned(FPresupuesto) then
begin
DADataSource.DataTable := FPresupuesto.DataTable;
FFormasPago := FFormasPagoController.BuscarTodos;
dsFormaPago.DataTable := FFormasPago.DataTable;
dsFormaPago.DataTable.Active := True;
frViewClientePresupuesto.Cliente := FPresupuesto.Cliente;
end
else begin
DADataSource.DataTable := NIL;
dsFormaPago.DataTable := NIL;
frViewClientePresupuesto.Cliente := nil;
end;
end;
procedure TfrViewPresupuestoCliente.SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente);
begin
FViewClientePresupuesto := Value;
end;
end.