unit uEditorReciboCliente; interface uses uEditorDBItem, Forms, uCustomView, uViewBase, uViewReciboCliente, dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, DB, uDADataTable, JvComponentBase, JvFormPlacement, ImgList, Controls, PngImageList, StdActns, Classes, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uBizRecibosCliente, uViewTextoRecibo, uViewDatosYSeleccionContacto2, dxLayoutControl, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, cxControls, cxCurrencyEdit; type IEditorReciboCliente = interface(IEditorDBItem) ['{91363D98-7206-404F-86F6-2CA55FB0447E}'] function GetReciboCliente: IBizRecibosCliente; procedure SetReciboCliente(const Value: IBizRecibosCliente); property ReciboCliente: IBizRecibosCliente read GetReciboCliente write SetReciboCliente; end; TfEditorReciboCliente = class(TfEditorDBItem, IEditorReciboCliente) TBXSeparatorItem14: TTBXSeparatorItem; TBXSubmenuItem2: TTBXSubmenuItem; TBXItem33: TTBXItem; pagContenido: TTabSheet; frViewTextoRecibo1: TfrViewTextoRecibo; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item1: TdxLayoutItem; edtFecha: TcxDBDateEdit; dxLayoutControl1Item2: TdxLayoutItem; frViewDatosYSeleccionContacto21: TfrViewDatosYSeleccionContacto2; dxLayoutControl1Item3: TdxLayoutItem; edtImporte: TcxDBCurrencyEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Item4: TdxLayoutItem; cxDBCurrencyEdit1: TcxDBCurrencyEdit; procedure actEliminarExecute(Sender: TObject); procedure FormShow(Sender: TObject); override; procedure frViewDatosYSeleccionContacto21edtlNombrePropertiesChange(Sender: TObject); procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean); procedure frViewDatosYSeleccionContacto21edtlNombrePropertiesEditValueChanged( Sender: TObject); procedure edtImportePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); private FReciboCliente: IBizRecibosCliente; protected procedure OnContactoChanged (Sender : TObject); function GetReciboCliente: IBizRecibosCliente; procedure SetReciboCliente(const Value: IBizRecibosCliente); public property ReciboCliente: IBizRecibosCliente read GetReciboCliente write SetReciboCliente; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses Windows, Variants, SysUtils, Dialogs, uEditorUtils, uDataModuleRecibosCliente, LiteralesRecibosCliente, uBizContacto; function ShowEditorReciboCliente (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorReciboCliente; begin AEditor := TfEditorReciboCliente.Create(Application); try AEditor.ReciboCliente := (ABizObject as IBizRecibosCliente); Result := AEditor.ShowModal; finally AEditor.Release; end; end; { TfEditorReciboCliente } { **************************** TfEditorReciboCliente **************************** } constructor TfEditorReciboCliente.Create(AOwner: TComponent); begin inherited; pgPaginas.ActivePageIndex := 0; end; destructor TfEditorReciboCliente.Destroy; begin FReciboCliente := NIL; inherited; end; procedure TfEditorReciboCliente.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox(PChar(msgLitBorrar), 'Atención', MB_YESNO) = IDYES) then inherited; end; procedure TfEditorReciboCliente.FormShow(Sender: TObject); begin inherited; if not Assigned(ReciboCliente) then raise Exception.Create('No hay ningún recibo asignado'); ReciboCliente.DataTable.Active := True; end; function TfEditorReciboCliente.GetReciboCliente: IBizRecibosCliente; begin Result := FReciboCliente; end; procedure TfEditorReciboCliente.SetReciboCliente(const Value: IBizRecibosCliente); begin FReciboCliente := Value; if Assigned(FReciboCliente) then begin dsDataTable.DataTable := FReciboCliente.DataTable; frViewTextoRecibo1.Recibo := FReciboCliente; frViewDatosYSeleccionContacto21.Contacto := FReciboCliente.Cliente; frViewDatosYSeleccionContacto21.OnContactoChanged := OnContactoChanged; end; end; procedure TfEditorReciboCliente.frViewDatosYSeleccionContacto21edtlNombrePropertiesChange( Sender: TObject); begin inherited; if Length(frViewDatosYSeleccionContacto21.edtlNombre.Text) = 0 then JvNavPanelHeader.Caption := 'Nuevo recibo de cliente' else JvNavPanelHeader.Caption := 'Recibo de ' + frViewDatosYSeleccionContacto21.edtlNombre.Text; Caption := JvNavPanelHeader.Caption; end; procedure TfEditorReciboCliente.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean); begin if (FReciboCliente.Cliente.NOMBRE = '') then begin AllowChange := False; showmessage(msgLitClienteObligatorio); end; end; procedure TfEditorReciboCliente.OnContactoChanged(Sender: TObject); begin FReciboCliente.Cliente := (frViewDatosYSeleccionContacto21.Contacto as IBizContacto); end; procedure TfEditorReciboCliente.frViewDatosYSeleccionContacto21edtlNombrePropertiesEditValueChanged(Sender: TObject); begin inherited; with (Sender as TcxDBTextEdit) do Enabled := (FReciboCliente.CODIGOCONTACTO <> 0) end; procedure TfEditorReciboCliente.edtImportePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin inherited; if VarIsNull(DisplayValue) or (DisplayValue = '')then DisplayValue := 0; end; initialization RegisterEditor(IBizRecibosCliente, ShowEditorReciboCliente, etItem); finalization end.