FactuGES2/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.pas

303 lines
11 KiB
ObjectPascal
Raw Blame History

unit uViewPedidoProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, uBizPedidosProveedor, DB, uDADataTable, uCustomView,
AppEvnts, StdCtrls, Mask, DBCtrls,
uViewObservaciones, uViewDatosYSeleccionProveedor,
cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit,
cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo,
uViewDireccionEntregaPedidoProv, cxLookupEdit, cxDBLookupEdit,
uBizContratosCliente, uContratosClienteController,
cxDBLookupComboBox, uFormasPagoController, ActnList, uDAInterfaces, uBizFormasPago,
uViewTienda, uPedidosProveedorController, uBizContactos, uVendedoresController;
type
IViewPedidoProveedor = interface(IViewBase)
['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}']
function GetController : IPedidosProveedorController;
procedure SetController (const Value : IPedidosProveedorController);
property Controller : IPedidosProveedorController read GetController write SetController;
function GetPedido: IBizPedidoProveedor;
procedure SetPedido(const Value: IBizPedidoProveedor);
property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);
property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido write SetViewProveedorPedido;
end;
TfrViewPedidoProveedor = class(TfrViewBase, IViewPedidoProveedor)
DADataSource: TDADataSource;
frViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item1: TdxLayoutItem;
dxLayoutControl1Item2: TdxLayoutItem;
edtFechaPedido: TcxDBDateEdit;
dxLayoutControl1Item4: TdxLayoutItem;
edtFechaConfirmacion: TcxDBDateEdit;
dxLayoutControl1Item5: TdxLayoutItem;
edtFechaEntrega: TcxDBDateEdit;
dxLayoutControl1Group1: TdxLayoutGroup;
dxLayoutControl1Group2: TdxLayoutGroup;
dxLayoutControl1Item3: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControl1Group5: TdxLayoutGroup;
dxLayoutControl1Group6: TdxLayoutGroup;
dxLayoutControl1Group8: TdxLayoutGroup;
dxLayoutControl1Group3: TdxLayoutGroup;
dxLayoutControl1Item8: TdxLayoutItem;
frViewDireccionEntregaPedidoProv1: TfrViewDireccionEntregaPedidoProv;
dxLayoutControl1Item9: TdxLayoutItem;
cbFormaPago: TcxDBLookupComboBox;
dxLayoutControl1Item10: TdxLayoutItem;
bFormasPago: TButton;
dxLayoutControl1Group4: TdxLayoutGroup;
dsFormaPago: TDADataSource;
dxLayoutControl1Item7: TdxLayoutItem;
edtFechaEnvio: TcxDBDateEdit;
dxLayoutControl1Item11: TdxLayoutItem;
eReferenciaContratoCli: TcxTextEdit;
dxLayoutControl1Item12: TdxLayoutItem;
Button1: TButton;
dxLayoutControl1Group9: TdxLayoutGroup;
dxLayoutControl1Group10: TdxLayoutGroup;
ActionList1: TActionList;
actVerContratoCli: TAction;
dxLayoutControl1Item13: TdxLayoutItem;
frViewTienda1: TfrViewTienda;
dxLayoutControl1Group11: TdxLayoutGroup;
frViewObservaciones1: TfrViewObservaciones;
dxLayoutControl1Item6: TdxLayoutItem;
dxLayoutControl1Item14: TdxLayoutItem;
edtlDescripcion: TcxDBTextEdit;
dxLayoutControl1Item15: TdxLayoutItem;
edtFechaEnvio2: TcxDBDateEdit;
dxLayoutControl1Item16: TdxLayoutItem;
cbVendedor: TcxDBLookupComboBox;
dxLayoutControl1Group7: TdxLayoutGroup;
dsVendedor: TDADataSource;
actAsignarContratoCli: TAction;
dxLayoutControl1Item17: TdxLayoutItem;
Button2: TButton;
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure bFormasPagoClick(Sender: TObject);
procedure actVerContratoCliExecute(Sender: TObject);
procedure actVerContratoCliUpdate(Sender: TObject);
procedure frViewProveedorPedidoButton1Click(Sender: TObject);
procedure frViewProveedorPedidoButton2Click(Sender: TObject);
procedure actAsignarContratoCliExecute(Sender: TObject);
procedure actAsignarContratoCliUpdate(Sender: TObject);
protected
FPedido : IBizPedidoProveedor;
FController : IPedidosProveedorController;
FViewProveedorPedido : TfrViewDatosYSeleccionProveedor;
FFormasPago : IBizFormaPago;
FVendedor : IBizVendedor;
FFormasPagoController : IFormasPagoController;
FVendedoresController : IVendedoresController;
FContratoCliAsociado : IBizContratoCliente;
FContratoCliController : IContratosClienteController;
function GetPedido: IBizPedidoProveedor;
procedure SetPedido(const Value: IBizPedidoProveedor); virtual;
function GetContratoCliAsociado: IBizContratoCliente;
procedure SetContratoCliAsociado(const Value: IBizContratoCliente);
function GetController : IPedidosProveedorController;
procedure SetController (const Value : IPedidosProveedorController);
function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);
public
property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
property ContratoCliAsociado: IBizContratoCliente read GetContratoCliAsociado write SetContratoCliAsociado;
property Controller : IPedidosProveedorController read GetController write SetController;
property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido;
end;
implementation
{$R *.dfm}
{ TfrViewPedidoProveedor }
procedure TfrViewPedidoProveedor.actAsignarContratoCliExecute(Sender: TObject);
var
AContrato : IBizContratoCliente;
begin
inherited;
AContrato := FContratoCliController.ElegirContratos(FContratoCliController.BuscarTodos,
'Elija el contrato de cliente que desea utilizar para dar de alta el albar<61>n.', False);
if Assigned(AContrato) then
begin
FController.AsignarContrato(Pedido, AContrato.ID, AContrato.REFERENCIA, AContrato.NOMBRE_CLIENTE);
ContratoCliAsociado := AContrato;
end;
end;
procedure TfrViewPedidoProveedor.actAsignarContratoCliUpdate(Sender: TObject);
begin
inherited;
//Lo modificamos para que el pedido de proveedor este asociado al contrato de cliente
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := not Assigned(FContratoCliAsociado)
end;
procedure TfrViewPedidoProveedor.actVerContratoCliExecute(Sender: TObject);
begin
inherited;
//Lo modificamos para que el pedido de proveedor este asociado al contrato de cliente
FContratoCliController.Ver(FContratoCliAsociado);
end;
procedure TfrViewPedidoProveedor.actVerContratoCliUpdate(Sender: TObject);
begin
inherited;
//Lo modificamos para que el pedido de proveedor este asociado al contrato de cliente
(Sender as TAction).Enabled := Assigned(FContratoCliAsociado)
end;
procedure TfrViewPedidoProveedor.bFormasPagoClick(Sender: TObject);
begin
inherited;
if Assigned(FFormasPago) then
FFormasPagoController.VerTodos(FFormasPago);
end;
procedure TfrViewPedidoProveedor.CustomViewCreate(Sender: TObject);
begin
inherited;
FFormasPago := Nil;
FVendedor := Nil;
FFormasPagoController := TFormasPagoController.Create;
FVendedoresController := TVendedoresController.Create;
FViewProveedorPedido := frViewProveedorPedido;
FViewProveedorPedido.MsgElegirProveedor := 'Elija el proveedor al que se le realizar<61> el pedido.';
eReferencia.Enabled := False;
eReferenciaContratoCli.Enabled := False;
FContratoCliAsociado := NIL;
FContratoCliController := TContratosClienteController.Create;
end;
procedure TfrViewPedidoProveedor.CustomViewDestroy(Sender: TObject);
begin
FViewProveedorPedido := Nil;
FFormasPago := Nil;
FFormasPagoController := NIL;
FVendedor := Nil;
FVendedoresController := NIL;
inherited;
end;
procedure TfrViewPedidoProveedor.frViewProveedorPedidoButton1Click(Sender: TObject);
begin
if Assigned(Pedido) and Assigned(Pedido.Proveedor) and
Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Si cambia de proveedor, se eliminar<61>n todos sus art<72>culos del pedido actual, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewProveedorPedido.actElegirContacto.Execute;
end;
procedure TfrViewPedidoProveedor.frViewProveedorPedidoButton2Click(Sender: TObject);
begin
if Assigned(Pedido) and Assigned(Pedido.Proveedor) and
Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then
begin
if (Application.MessageBox('Si cambia de proveedor, se eliminar<61>n todos sus art<72>culos del pedido actual, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
Exit;
end;
frViewProveedorPedido.actAnadirContacto.Execute;
end;
function TfrViewPedidoProveedor.GetContratoCliAsociado: IBizContratoCliente;
begin
Result := FContratoCliAsociado;
end;
function TfrViewPedidoProveedor.GetController: IPedidosProveedorController;
begin
Result := FController;
end;
function TfrViewPedidoProveedor.GetPedido: IBizPedidoProveedor;
begin
Result := FPedido;
end;
function TfrViewPedidoProveedor.GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
begin
Result := FViewProveedorPedido;
end;
procedure TfrViewPedidoProveedor.SetContratoCliAsociado(const Value: IBizContratoCliente);
begin
FContratoCliAsociado := Value;
if Assigned(FContratoCliAsociado) then
begin
if not FContratoCliAsociado.DataTable.Active then
FContratoCliAsociado.DataTable.Active := True;
eReferenciaContratoCli.Text := FContratoCliAsociado.REFERENCIA
end
else
eReferenciaContratoCli.Text := '';
end;
procedure TfrViewPedidoProveedor.SetController(const Value: IPedidosProveedorController);
begin
FController := Value;
if Assigned(FController) then
ViewProveedorPedido.Controller := Controller.ProveedorController;
end;
procedure TfrViewPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
FPedido := Value;
if Assigned(FPedido) then
begin
DADataSource.DataTable := FPedido.DataTable;
frViewTienda1.DataItem := FPedido.DataTable;
FFormasPago := FFormasPagoController.BuscarTodos;
dsFormaPago.DataTable := FFormasPago.DataTable;
dsFormaPago.DataTable.Active := True;
FVendedor := (FVendedoresController.BuscarTodos as IBizVendedor);
dsVendedor.DataTable := FVendedor.DataTable;
dsVendedor.DataTable.Active := True;
FContratoCliAsociado := NIL;
if (FPedido.ID_CONTRATO_CLIENTE > 0) then
ContratoCliAsociado := FContratoCliController.Buscar(FPedido.ID_CONTRATO_CLIENTE)
else
eReferenciaContratoCli.Text := 'No hay contrato asociado';
end
else begin
DADataSource.DataTable := NIL;
dsFormaPago.DataTable := NIL;
dsVendedor.DataTable := NIL;
FContratoCliAsociado := NIL;
end;
frViewProveedorPedido.Proveedor := FPedido.Proveedor;
frViewDireccionEntregaPedidoProv1.PedidoProveedor := FPedido;
end;
procedure TfrViewPedidoProveedor.SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);
begin
FViewProveedorPedido := Value;
end;
end.