unit uEditorMontaje; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, uViewMontaje, uBizMontajes, JvNavigationPane, ActnList, uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uViewMontajes, Grids, DBGrids, uViewGrid, uBizPedidosMontaje, uViewPedidosMontaje, uBizArticulosMontaje, uViewArticulosMontaje, uViewFichaBeneficiosMontaje, JvComponentBase; type IEditorMontaje = interface(IEditorDBItem) ['{FDE5A2F2-8C68-49CA-917B-C97E618CF9E9}'] function GetMontaje: IBizMontaje; procedure SetMontaje(const Value: IBizMontaje); property Montaje: IBizMontaje read GetMontaje write SetMontaje; end; TfEditorMontaje = class(TfEditorDBItem, IEditorMontaje) pagPedidos: TTabSheet; frViewPedidosMontaje: TfrViewPedidosMontaje; pagArticulos: TTabSheet; frViewArticulosMontaje: TfrViewArticulosMontaje; pagFichaBeneficios: TTabSheet; frViewFichaBeneficiosMontaje: TfrViewFichaBeneficiosMontaje; frViewMontaje1: TfrViewMontaje; TBXSeparatorItem14: TTBXSeparatorItem; TBXItem7: TTBXItem; actEtiquetas: TAction; procedure FormShow(Sender: TObject); procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange( Sender: TObject); procedure frViewPedidosMontajeactRecibirPedidoExecute(Sender: TObject); procedure frViewPedidosMontajeactRecibirPedidoUpdate(Sender: TObject); procedure actEtiquetasExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); private FMontaje: IBizMontaje; FViewMontaje : IViewMontaje; FPedidosMontaje : IBizPedidosMontaje; FArticulosMontaje : IBizArticulosMontaje; FFichaBeneficiosMontaje : IBizFichaBeneficiosMontaje; protected function GetModified: Boolean; override; function GetMontaje: IBizMontaje; virtual; procedure SetMontaje(const Value: IBizMontaje); virtual; function GetViewMontaje: IViewMontaje; procedure SetViewMontaje(const Value: IViewMontaje); property ViewMontaje: IViewMontaje read GetViewMontaje write SetViewMontaje; public property Montaje: IBizMontaje read GetMontaje write SetMontaje; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uCustomEditor, uDataModuleMontajes, uDataModuleBase, uEditorUtils, uBizPedidosProveedor, uDataTableUtils, uAsistenteEtiquetasMontajes; function ShowEditorMontaje (ABizObject : TDADataTableRules): TModalResult; var AEditor: TfEditorMontaje; begin AEditor := TfEditorMontaje.Create(Application); try AEditor.Montaje := (ABizObject as IBizMontaje); Result := AEditor.ShowModal; finally AEditor.Release; end; end; { ******************************* TfEditorMontaje ******************************* } function TfEditorMontaje.GetMontaje: IBizMontaje; begin Result := FMontaje; end; function TfEditorMontaje.GetViewMontaje: IViewMontaje; begin Result := FViewMontaje; end; procedure TfEditorMontaje.SetMontaje(const Value: IBizMontaje); begin FMontaje := Value; dsDataTable.DataTable := FMontaje.DataTable; if Assigned(FViewMontaje) and Assigned(Montaje) then begin FViewMontaje.Montaje := Montaje; frViewFichaBeneficiosMontaje.FichaBeneficiosMontaje := Montaje.FichaBeneficios; end; FPedidosMontaje := DarPedidosMontaje(FMontaje.CODIGO); FPedidosMontaje.DataTable.Active := True; frViewPedidosMontaje.CodigoMontaje := FMontaje.CODIGO; frViewPedidosMontaje.PedidosMontaje := FPedidosMontaje; FArticulosMontaje := DarArticulosMontaje(FMontaje.CODIGO); FArticulosMontaje.DataTable.Active := True; frViewArticulosMontaje.CodigoMontaje := FMontaje.CODIGO; frViewArticulosMontaje.ArticulosMontaje := FArticulosMontaje; // FFichaBeneficiosMontaje := dmMontajes.GetFichaBeneficios(FMontaje.CODIGO); // FFichaBeneficiosMontaje.DataTable.Active := True; // frViewFichaBeneficiosMontaje.FichaBeneficiosMontaje := FFichaBeneficiosMontaje; end; procedure TfEditorMontaje.SetViewMontaje(const Value: IViewMontaje); begin FViewMontaje := Value; if Assigned(FViewMontaje) and Assigned(Montaje) then FViewMontaje.Montaje := Montaje; end; procedure TfEditorMontaje.FormShow(Sender: TObject); begin inherited; if not Assigned(FViewMontaje) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Montaje) then raise Exception.Create('No hay ningún almacén asignado'); Montaje.DataTable.Active := True; { FViewMontaje.ShowEmbedded(pagGeneral); FViewMontaje.SetFocus;} end; destructor TfEditorMontaje.Destroy; begin FViewMontaje := NIL; FMontaje := NIL; FPedidosMontaje := NIL; FArticulosMontaje := NIL; // FFichaBeneficiosMontaje := NIL; inherited; end; constructor TfEditorMontaje.Create(AOwner: TComponent); begin inherited; // ViewMontaje := CreateView(TfrViewMontaje) as IViewMontaje; ViewMontaje := frViewMontaje1; end; procedure TfEditorMontaje.frViewDatosYSeleccionContactoedtlNombrePropertiesChange( Sender: TObject); begin inherited; if Length(frViewMontaje1.frViewDatosYSeleccionContacto.edtlNombre.Text) = 0 then JvNavPanelHeader.Caption := 'Nuevo montaje' else JvNavPanelHeader.Caption := 'Montaje para ' + frViewMontaje1.frViewDatosYSeleccionContacto.edtlNombre.Text; Caption := JvNavPanelHeader.Caption; end; procedure TfEditorMontaje.frViewPedidosMontajeactRecibirPedidoExecute(Sender: TObject); var APedido: IBizPedidosMontaje; begin inherited; (frViewPedidosMontaje as IViewPedidosMontaje).SyncFocusedRecordsFromGrid; if FPedidosMontaje.SITUACION = SITUACION_RECIBIDO then begin showmessage('El pedido seleccionado ya esta totalmente recibido'); exit; end; try FArticulosMontaje.RecibirArticulos(FPedidosMontaje, 0); finally (frViewPedidosMontaje as IViewPedidosMontaje).RefreshGrid; (frViewPedidosMontaje as IViewPedidosMontaje).SyncFocusedRecordsFromDataSet; end; end; procedure TfEditorMontaje.frViewPedidosMontajeactRecibirPedidoUpdate(Sender: TObject); begin inherited; if Assigned(FPedidosMontaje.DataTable) then (Sender as TAction).Enabled := (not FPedidosMontaje.DataTable.IsEmpty) else (Sender as TAction).Enabled := False; end; function TfEditorMontaje.GetModified: Boolean; var bCambiado : Boolean; begin bCambiado := inherited GetModified; if not bCambiado then begin bCambiado := (frViewFichaBeneficiosMontaje.DADataSource.DataTable.State = dsEdit) or DeltaValuesAreDifferent(frViewFichaBeneficiosMontaje.DADataSource.DataTable.Delta); end; Result := bCambiado; end; procedure TfEditorMontaje.actEtiquetasExecute(Sender: TObject); begin inherited; VerAsistenteEtiquetasMontajes(FMontaje); end; procedure TfEditorMontaje.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox('¿Desea borrar este montaje?', 'Atención', MB_YESNO) = IDYES) then inherited; end; initialization RegisterEditor(IBizMontaje, ShowEditorMontaje, etItem); end.