unit uEditorFacturasProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, pngimage, JvComponentBase, uEditorGridBase, uBizFacturasProveedor, uIEditorFacturasProveedor, uFacturasProveedorController, uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase, JvExComCtrls, JvStatusBar, JSDialog, uViewFacturasProveedor; type TfEditorFacturasProveedor = class(TfEditorGridBase, IEditorFacturasProveedor) Cambiarlasituacin1: TMenuItem; N4: TMenuItem; JsNuevaFacturaDialog: TJSDialog; JsListaFacturasGeneradas: TJSDialog; frViewFacturasProveedor1: TfrViewFacturasProveedor; procedure FormShow(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure actModificarUpdate(Sender: TObject); private FFacturas: IBizFacturaProveedor; FController : IFacturasProveedorController; protected function GetFacturas: IBizFacturaProveedor; procedure SetFacturas(const Value: IBizFacturaProveedor); function GetController : IFacturasProveedorController; virtual; procedure SetController (const Value : IFacturasProveedorController); virtual; procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; procedure DuplicarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public procedure PonerTitulos(const ATitulo: string = ''); override; property Facturas: IBizFacturaProveedor read GetFacturas write SetFacturas; property Controller : IFacturasProveedorController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uDataModuleFacturasProveedor, uDataModuleUsuarios, // uPedidosProveedorController, uBizPedidosProveedor, uAlbaranesProveedorController, uBizAlbaranesProveedor, uEditorBase, uGenerarFacturasProvAlbProvUtils; {$R *.dfm} { *************************** TfEditorFacturasProveedor *************************** } procedure TfEditorFacturasProveedor.actEliminarUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := HayDatos and (FFacturas.SITUACION = 'PENDIENTE'); end; procedure TfEditorFacturasProveedor.actModificarUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := HayDatos and (FFacturas.SITUACION = 'PENDIENTE'); end; constructor TfEditorFacturasProveedor.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewFacturasProveedor1; // CreateView(TfrViewFacturasProveedor) as IViewFacturasProveedor; end; destructor TfEditorFacturasProveedor.Destroy; begin FFacturas := NIL; inherited; end; procedure TfEditorFacturasProveedor.DuplicarInterno; var AFactura : IBizFacturaProveedor; begin inherited; AFactura := FController.Duplicar(FFacturas); try FController.Ver(AFactura); finally actRefrescar.Execute; end; end; procedure TfEditorFacturasProveedor.EliminarInterno; begin if (Application.MessageBox('¿Desea borrar esta factura de proveedor?', 'Atención', MB_YESNO) = IDYES) then begin FController.Eliminar(Facturas); inherited; end; end; procedure TfEditorFacturasProveedor.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Facturas) then raise Exception.Create('No hay ningún presupuesto asignado'); Facturas.DataTable.Active := True; ViewGrid.GotoFirst; end; function TfEditorFacturasProveedor.GetController: IFacturasProveedorController; begin Result := FController; end; function TfEditorFacturasProveedor.GetFacturas: IBizFacturaProveedor; begin Result := FFacturas; end; procedure TfEditorFacturasProveedor.ImprimirInterno; begin inherited; end; procedure TfEditorFacturasProveedor.ModificarInterno; begin inherited; FController.Ver(Facturas); end; procedure TfEditorFacturasProveedor.NuevoInterno; var Respuesta : Integer; // FPedidosProveedorController : IPedidosProveedorController; // APedido : IBizPedidoProveedor; FAlbaranesProveedorController : IAlbaranesProveedorController; AAlbaranes : IBizAlbaranProveedor; AFacturasNuevas : IBizFacturaProveedor; i : integer; begin inherited; Respuesta := JsNuevaFacturaDialog.Execute; if Respuesta <> IDCANCEL then begin case JsNuevaFacturaDialog.CustomButtonResult of 300 : begin // Utilizar un pedido { FPedidosProveedorController := TPedidosProveedorController.Create; try APedido := FPedidosProveedorController.ElegirPedidos(FPedidosProveedorController.BuscarPendientes, 'Elija el pedido de proveedor que desea utilizar para dar de alta la factura.' + #10#13 + 'Tenga en cuenta que sólo se podrán utilizar pedidos que no tengan ningún albarán ya asociado.', False); if Assigned(APedido) then begin if FController.Anadir(Facturas, APedido) then FController.Ver(Facturas); end; finally FPedidosClienteController := NIL; end;} end; 200 : begin // Utilizar albaranes GenerarFacturaProv; actRefrescar.Execute; end; 100 : begin // Factura nuevo vacio if FController.Anadir(Facturas) then FController.Ver(Facturas); end; end; end; end; procedure TfEditorFacturasProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de facturas de proveedor - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorFacturasProveedor.PrevisualizarInterno; begin inherited; end; procedure TfEditorFacturasProveedor.SetController(const Value: IFacturasProveedorController); begin FController := Value; end; procedure TfEditorFacturasProveedor.SetFacturas(const Value: IBizFacturaProveedor); begin FFacturas := Value; dsDataTable.DataTable := FFacturas.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewFacturasProveedor).Facturas := Facturas; end; end.