unit uViewDetallesFacturaProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewDetallesBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit, Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, StdActns, ExtActns, JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar, uArticulosController, uViewDetallesArticulos, uBizFacturasProveedor, uDAInterfaces, cxButtonEdit, cxDropDownEdit, uBizTiposIVA, Menus, cxGridCustomPopupMenu, uTiposIVAController, cxGridPopupMenu, cxEditRepositoryItems, cxDBLookupComboBox; type IViewDetallesFacturaProveedor = interface(IViewDetallesArticulos) ['{28876F6E-E6EC-4DDA-9023-AE23EB9D6A62}'] function GetFactura: IBizFacturaProveedor; procedure SetFactura(const Value: IBizFacturaProveedor); property Factura: IBizFacturaProveedor read GetFactura write SetFactura; end; TfrViewDetallesFacturaProveedor = class(TfrViewDetallesArticulos, IViewDetallesFacturaProveedor) cxGridViewIVA: TcxGridDBColumn; cxGridViewIMPORTE_IVA: TcxGridDBColumn; cxGridViewID_TIPO_IVA: TcxGridDBColumn; dsTiposIVADetalles: TDADataSource; procedure cxGridViewID_TIPO_IVAPropertiesEditValueChanged(Sender: TObject); procedure actAnadirExecute(Sender: TObject); protected FFactura: IBizFacturaProveedor; FTiposIVAController : ITiposIVAController; FTiposIVA: IBizTipoIVA; function GetFactura: IBizFacturaProveedor; procedure SetFactura(const Value: IBizFacturaProveedor); procedure AnadirArticulosInterno; override; procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; override; public property Factura: IBizFacturaProveedor read GetFactura write SetFactura; destructor Destroy; override; constructor Create(AOwner: TComponent); override; end; implementation {$R *.dfm} uses uDetallesFacturaProveedorController, uFactuGES_App; { TfrViewDetallesFacturaProveedor } procedure TfrViewDetallesFacturaProveedor.actAnadirExecute(Sender: TObject); begin inherited; ShowHourglassCursor; _FocusedView.BeginUpdate; try if _FocusedView.Controller.EditingController.IsEditing then _FocusedView.Controller.EditingController.Edit.PostEditValue; if not VarIsNull(FFactura.Proveedor.ID_TIPO_IVA) then begin cxGridViewID_TIPO_IVA.EditValue := FFactura.Proveedor.ID_TIPO_IVA; end else cxGridViewID_TIPO_IVA.EditValue := AppFactuGES.EmpresaActiva.ID_TIPO_IVA; cxGridViewIVA.EditValue := FTiposIVA.IVA; finally _FocusedView.EndUpdate; HideHourglassCursor; end; end; function TfrViewDetallesFacturaProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin if (Factura.TIPO = CTE_TIPO_ABONO) then Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tRefProveedorParaCompras, -1, -1) else Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tRefProveedorParaCompras, -1, -1); end; procedure TfrViewDetallesFacturaProveedor.AnadirArticulosInterno; begin if (Factura.TIPO = CTE_TIPO_ABONO) then (Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, true, -1) else (Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor); end; constructor TfrViewDetallesFacturaProveedor.Create(AOwner: TComponent); begin inherited; FTiposIVAController := TTiposIVAController.Create; end; procedure TfrViewDetallesFacturaProveedor.cxGridViewID_TIPO_IVAPropertiesEditValueChanged( Sender: TObject); begin inherited; ShowHourglassCursor; _FocusedView.BeginUpdate; try cxGridViewIVA.EditValue := FTiposIVA.IVA; Controller.ActualizarTotales(Detalles); finally _FocusedView.EndUpdate; HideHourglassCursor; end; end; destructor TfrViewDetallesFacturaProveedor.Destroy; begin FTiposIVA := NIL; FTiposIVAController := Nil; inherited; end; function TfrViewDetallesFacturaProveedor.GetFactura: IBizFacturaProveedor; begin Result := FFactura; end; function TfrViewDetallesFacturaProveedor.HayQueRecalcular( AItem: TcxCustomGridTableItem): Boolean; begin Result := inherited HayQueRecalcular(AItem); if not Result then Result := (AItem = cxGridViewID_TIPO_IVA); end; procedure TfrViewDetallesFacturaProveedor.RellenarArticulosInterno; begin if (Factura.TIPO = CTE_TIPO_ABONO) then (Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, False, -1) else (Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, False); end; procedure TfrViewDetallesFacturaProveedor.SetFactura(const Value: IBizFacturaProveedor); begin FFactura := Value; if Assigned(FFactura) then begin FTiposIVA := FTiposIVAController.BuscarTodos; dsTiposIVADetalles.DataTable := FTiposIVA.DataTable; FTiposIVA.DataTable.Active := True; end else begin dsTiposIVADetalles.DataTable := NIL; end end; end.