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

220 lines
8.0 KiB
ObjectPascal
Raw Blame 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;
type
IViewPresupuestoCliente = interface(IViewBase)
['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}']
function GetPedido: IBizPresupuestoCliente;
procedure SetPedido(const Value: IBizPresupuestoCliente);
property Pedido: IBizPresupuestoCliente read GetPedido write SetPedido;
function GetViewClientePedido: TfrViewDatosYSeleccionCliente;
procedure SetViewClientePedido(const Value: TfrViewDatosYSeleccionCliente);
property ViewClientePedido: TfrViewDatosYSeleccionCliente read GetViewClientePedido write SetViewClientePedido;
end;
TfrViewPresupuestoCliente = class(TfrViewBase, IViewPresupuestoCliente)
DADataSource: TDADataSource;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item2: TdxLayoutItem;
edtFechaPedido: TcxDBDateEdit;
dxLayoutControl1Group1: TdxLayoutGroup;
dxLayoutControl1Group2: TdxLayoutGroup;
dxLayoutControl1Item6: TdxLayoutItem;
memObservaciones: TcxDBMemo;
dxLayoutControl1Item3: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControl1Group6: TdxLayoutGroup;
dxLayoutControl1Group7: TdxLayoutGroup;
dxLayoutControl1Group8: TdxLayoutGroup;
dxLayoutControl1Item1: TdxLayoutItem;
frViewClientePedido: TfrViewDatosYSeleccionCliente;
dxLayoutControl1Item8: TdxLayoutItem;
eCalle: TcxDBTextEdit;
dxLayoutControl1Item9: TdxLayoutItem;
ePoblacion: TcxDBTextEdit;
dxLayoutControl1Item10: TdxLayoutItem;
eCodigoPostal: TcxDBTextEdit;
dxLayoutControl1Item11: TdxLayoutItem;
eProvincia: TcxDBTextEdit;
dxLayoutControl1Item12: TdxLayoutItem;
ePersonaContacto: TcxDBTextEdit;
dxLayoutControl1Item13: TdxLayoutItem;
eTlfTrabajo: TcxDBTextEdit;
dxLayoutControl1Group4: TdxLayoutGroup;
dxLayoutControl1Group9: TdxLayoutGroup;
dxLayoutControl1Item14: TdxLayoutItem;
bElegirDireccion: TBitBtn;
ActionList1: TActionList;
actElegirDireccion: TAction;
dxLayoutControl1Item4: TdxLayoutItem;
cbFormaPago: TcxDBLookupComboBox;
dxLayoutControl1Item5: TdxLayoutItem;
bFormasPago: TButton;
dxLayoutControl1Group5: TdxLayoutGroup;
dsFormaPago: TDADataSource;
dxLayoutControl1Group10: TdxLayoutGroup;
dxLayoutControl1Item7: TdxLayoutItem;
edtFechaPrevistaEnvio: TcxDBDateEdit;
dxLayoutControl1Item15: TdxLayoutItem;
eRefCliente: TcxDBTextEdit;
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure actElegirDireccionExecute(Sender: TObject);
procedure actElegirDireccionUpdate(Sender: TObject);
procedure bFormasPagoClick(Sender: TObject);
procedure frViewClientePedidoButton1Click(Sender: TObject);
procedure frViewClientePedidoButton2Click(Sender: TObject);
protected
FPedido : IBizPresupuestoCliente;
FViewClientePedido : TfrViewDatosYSeleccionCliente;
FFormasPagoController : IFormasPagoController;
function GetPedido: IBizPresupuestoCliente;
procedure SetPedido(const Value: IBizPresupuestoCliente); virtual;
function GetViewClientePedido: TfrViewDatosYSeleccionCliente;
procedure SetViewClientePedido(const Value: TfrViewDatosYSeleccionCliente);
public
property Pedido: IBizPresupuestoCliente read GetPedido write SetPedido;
property ViewClientePedido: TfrViewDatosYSeleccionCliente read GetViewClientePedido;
end;
implementation
{$R *.dfm}
{ TfrViewPresupuestoCliente }
uses
uClientesController, uBizDireccionesContacto, uPresupuestosClienteController,
uBizFormasPago;
procedure TfrViewPresupuestoCliente.actElegirDireccionExecute(Sender: TObject);
var
AClientesController : IClientesController;
APedidoController : IPresupuestosClienteController;
ADireccion : IBizDireccionesContacto;
begin
inherited;
AClientesController := TClientesController.Create;
APedidoController := TPresupuestosClienteController.Create;
try
ADireccion := AClientesController.ElegirDireccionEntrega(FPedido.Cliente.Direcciones,
'Seleccione la direcci<63>n del cliente que quiere utilizar como direcci<63>n de envio de este pedido.');
if Assigned(ADireccion) then
begin
APedidoController.CopiarDireccionEnvio(ADireccion, FPedido);
FPedido.Edit;
FPedido.IMPORTE_PORTE := ADireccion.PORTE;
end;
finally
AClientesController := NIL;
APedidoController := NIL;
end;
end;
procedure TfrViewPresupuestoCliente.actElegirDireccionUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (not ReadOnly) and
Assigned(FPedido) and
Assigned(FViewClientePedido) and
FPedido.DataTable.Active and
Assigned(FPedido.Cliente) and
Assigned(FPedido.Cliente) and
Assigned(FPedido.Cliente.Direcciones) and
FPedido.Cliente.Direcciones.DataTable.Active and
(FPedido.Cliente.Direcciones.DataTable.RecordCount > 0);
end;
procedure TfrViewPresupuestoCliente.bFormasPagoClick(Sender: TObject);
begin
inherited;
FFormasPagoController.VerTodos((dsFormaPago.DataTable) as IBizFormaPago);
end;
procedure TfrViewPresupuestoCliente.CustomViewCreate(Sender: TObject);
begin
inherited;
FFormasPagoController := TFormasPagoController.Create;
FViewClientePedido := frViewClientePedido;
FViewClientePedido.MsgElegirCliente := 'Elija el cliente al que se le realizar<61> el pedido.';
end;
procedure TfrViewPresupuestoCliente.CustomViewDestroy(Sender: TObject);
begin
FViewClientePedido := NIL;
FFormasPagoController := NIL;
inherited;
end;
procedure TfrViewPresupuestoCliente.frViewClientePedidoButton1Click(Sender: TObject);
begin
if Assigned(Pedido) and Assigned(Pedido.Cliente) and
Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Los descuentos de los art<72>culos del pedido ser<65>n actualizados con los del nuevo cliente seleccionado, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewClientePedido.actElegirContacto.Execute;
end;
procedure TfrViewPresupuestoCliente.frViewClientePedidoButton2Click(Sender: TObject);
begin
if Assigned(Pedido) and Assigned(Pedido.Cliente) and
Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Los descuentos de los art<72>culos del pedido ser<65>n actualizados con los del nuevo cliente seleccionado, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewClientePedido.actAnadirContacto.Execute;
end;
function TfrViewPresupuestoCliente.GetPedido: IBizPresupuestoCliente;
begin
Result := FPedido;
end;
function TfrViewPresupuestoCliente.GetViewClientePedido: TfrViewDatosYSeleccionCliente;
begin
Result := FViewClientePedido;
end;
procedure TfrViewPresupuestoCliente.SetPedido(const Value: IBizPresupuestoCliente);
begin
FPedido := Value;
if Assigned(FPedido) then
begin
DADataSource.DataTable := FPedido.DataTable;
dsFormaPago.DataTable := FFormasPagoController.BuscarTodos.DataTable;
dsFormaPago.DataTable.Active := True;
frViewClientePedido.Cliente := FPedido.Cliente;
end
else begin
DADataSource.DataTable := NIL;
dsFormaPago.DataTable := NIL;
frViewClientePedido.Cliente := nil;
end;
end;
procedure TfrViewPresupuestoCliente.SetViewClientePedido(const Value: TfrViewDatosYSeleccionCliente);
begin
FViewClientePedido := Value;
end;
end.