unit uViewFacturaProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, DB, uDADataTable, uCustomView, uViewDatosYSeleccionCliente, uBizFacturasProveedor, cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, dxLayoutControl, cxMemo, cxMaskEdit, cxDropDownEdit, cxCalendar, cxSpinEdit, StdCtrls, Mask, DBCtrls, cxGraphics, dxLayoutLookAndFeels, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, uViewDatosYSeleccionProveedor, uDAInterfaces, uBizFormasPago, uViewTienda, uFacturasProveedorController; type IViewFacturaProveedor = interface(IViewBase) ['{DD934441-75CC-452F-8861-684961E90BB6}'] function GetController : IFacturasProveedorController; procedure SetController (const Value : IFacturasProveedorController); property Controller : IFacturasProveedorController read GetController write SetController; function GetFactura: IBizFacturaProveedor; procedure SetFactura(const Value: IBizFacturaProveedor); property Factura: IBizFacturaProveedor read GetFactura write SetFactura; end; TfrViewFacturaProveedor = class(TfrViewBase, IViewFacturaProveedor) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item1: TdxLayoutItem; eReferencia: TcxDBTextEdit; dxLayoutControl1Item2: TdxLayoutItem; edtFecha: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item5: TdxLayoutItem; memObservaciones: TcxDBMemo; dxLayoutControl1Group5: TdxLayoutGroup; dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; dsFormaPago: TDADataSource; dxLayoutControl1Item4: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item10: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; eReferenciaProveedor: TcxDBTextEdit; dxLayoutControl1Item3: TdxLayoutItem; frViewProveedorFactura: TfrViewDatosYSeleccionProveedor; dxLayoutControl1Item7: TdxLayoutItem; frViewTienda1: TfrViewTienda; dxLayoutControl1Group4: TdxLayoutGroup; procedure bFormasPagoClick(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure CustomViewCreate(Sender: TObject); procedure frViewProveedorFacturaButton1Click(Sender: TObject); procedure frViewProveedorFacturaButton2Click(Sender: TObject); procedure frViewTienda1cbTiendaPropertiesChange(Sender: TObject); protected FFactura : IBizFacturaProveedor; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FController : IFacturasProveedorController; function GetFactura: IBizFacturaProveedor; procedure SetFactura(const Value: IBizFacturaProveedor); function GetController : IFacturasProveedorController; procedure SetController (const Value : IFacturasProveedorController); public property Factura: IBizFacturaProveedor read GetFactura write SetFactura; property Controller : IFacturasProveedorController read GetController write SetController; end; implementation uses uDataModuleContactos, schFacturasProveedorClient_Intf; {$R *.dfm} { TfrViewFacturaProveedor } procedure TfrViewFacturaProveedor.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewFacturaProveedor.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; frViewProveedorFactura.MsgElegirProveedor := 'Elija el proveedor al que se le realizará la factura.'; end; procedure TfrViewFacturaProveedor.CustomViewDestroy(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := NIL; end; procedure TfrViewFacturaProveedor.frViewProveedorFacturaButton1Click(Sender: TObject); begin if Assigned(Factura) and Assigned(Factura.Proveedor) and Assigned (Factura.Detalles) and (Factura.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos de la factura actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewProveedorFactura.actElegirContacto.Execute; end; procedure TfrViewFacturaProveedor.frViewProveedorFacturaButton2Click( Sender: TObject); begin if Assigned(Factura) and Assigned(Factura.Proveedor) and Assigned (Factura.Detalles) and (Factura.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos de la factura actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewProveedorFactura.actAnadirContacto.Execute; end; procedure TfrViewFacturaProveedor.frViewTienda1cbTiendaPropertiesChange( Sender: TObject); begin inherited; if assigned(Factura) and assigned(Controller) then begin Controller.SetID_Tienda(Factura, frViewTienda1.getIDTienda); end; end; function TfrViewFacturaProveedor.GetController: IFacturasProveedorController; begin Result := FController; end; function TfrViewFacturaProveedor.GetFactura: IBizFacturaProveedor; begin Result := FFactura; end; procedure TfrViewFacturaProveedor.SetController(const Value: IFacturasProveedorController); begin FController := Value; if Assigned(FController) then frViewProveedorFactura.Controller := Controller.ProveedorController; end; procedure TfrViewFacturaProveedor.SetFactura(const Value: IBizFacturaProveedor); begin FFactura := Value; if Assigned(FFactura) then begin DADataSource.DataTable := FFactura.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; //Solo se deshabilita al insertar, luego la referencia será modificable eReferencia.Enabled := (FFactura.DataTable.State = dsInsert); if FFactura.TIPO = CTE_TIPO_ABONO then begin dxLayoutControl1Item2.Caption := 'Fecha del abono:'; dxLayoutControl1Group1.Caption := 'Datos del abono'; end; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; frViewProveedorFactura.Proveedor := NIL end; end; end.