unit uEditorMontajeCompleto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorMontajeDetalle, dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, uCustomView, uViewBase, uViewDetallesBase, uViewDetallesMontaje, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorMontajeCompleto, uViewGridBase, uViewGrid, cxCustomData, uViewPedidosMontaje, uBizMontajes, uMontajesController, uViewPedidosProveedor, uViewCobrosCliente, uViewCobrosMontaje, uViewDocumentosAsociados, uBizDocumentosAsociados, uViewGastosMontaje, uViewSituacionMontaje, StdCtrls, JvExComCtrls, JvStatusBar; type TfEditorMontajeCompleto = class(TfEditorMontajeDetalle, IEditorMontajeCompleto) pagPedidos: TTabSheet; frViewPedidosMontaje1: TfrViewPedidosMontaje; pagCobros: TTabSheet; frViewCobrosMontaje1: TfrViewCobrosMontaje; pagPlanos: TTabSheet; frViewDocumentosAsociados1: TfrViewDocumentosAsociados; PagGastos: TTabSheet; frViewGastosMontaje1: TfrViewGastosMontaje; frViewSituacionMontaje1: TfrViewSituacionMontaje; procedure frViewPedidosMontaje1actAnadirExecute(Sender: TObject); procedure frViewPedidosMontaje1actModificarExecute(Sender: TObject); procedure frViewPedidosMontaje1actEliminarExecute(Sender: TObject); procedure frViewCobrosMontaje1actAnadirExecute(Sender: TObject); procedure frViewCobrosMontaje1actModificarExecute(Sender: TObject); procedure frViewCobrosMontaje1actEliminarExecute(Sender: TObject); procedure frViewGastosMontaje1actAnadirExecute(Sender: TObject); procedure frViewGastosMontaje1actEliminarExecute(Sender: TObject); procedure frViewPedidosMontajeAfterSummary(ASender: TcxDataSummary); procedure frViewGastosMontajeAfterSummary(ASender: TcxDataSummary); procedure frViewCobrosMontajeAfterSummary(ASender: TcxDataSummary); procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure JvFormStorageRestorePlacement(Sender: TObject); procedure JvFormStorageSavePlacement(Sender: TObject); private FViewDocumentos : IViewDocumentosAsociados; protected procedure SetController (const Value : IMontajesController); override; procedure SetMontaje(const Value: IBizMontaje); override; //DOCUMENTOS ASOCIADOS function GetViewDocumentos: IViewDocumentosAsociados; procedure SetViewDocumentos(const Value: IViewDocumentosAsociados); property ViewDocumentos: IViewDocumentosAsociados read GetViewDocumentos write SetViewDocumentos; public constructor Create(AOwner: TComponent); override; end; implementation {$R *.dfm} uses uMontajesCompletoController, uBizMontajesCompleto, uEditorMontaje, uPedidosMontajeController, uCobrosMontajeController, uBizPedidosMontaje, uBizCobrosMontaje, uGastosMontajeController, uEditorDBItem, schMontajesClient_Intf, uEditorDBBase ; { TfEditorMontajeCompleto } constructor TfEditorMontajeCompleto.Create(AOwner: TComponent); begin inherited; //DOCUMENTOS ASOCIADOS FViewDocumentos := frViewDocumentosAsociados1; frViewPedidosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := frViewPedidosMontajeAfterSummary; frViewGastosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := frViewGastosMontajeAfterSummary; frViewCobrosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := frViewCobrosMontajeAfterSummary; end; procedure TfEditorMontajeCompleto.CustomEditorClose(Sender: TObject; var Action: TCloseAction); begin inherited; //DOCUMENTOS ASOCIADOS FViewDocumentos.DeshabilitarDocumentos; FViewDocumentos := NIL; frViewPedidosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := Nil; frViewGastosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := Nil; frViewCobrosMontaje1.cxGridView.DataController.Summary.OnAfterSummary := Nil; end; procedure TfEditorMontajeCompleto.FormShow(Sender: TObject); begin inherited; //DOCUMENTOS ASOCIADOS if Assigned((Montaje as IBizMontajeCompleto).GestorDocumentos) then begin ViewDocumentos := CreateView(TfrViewDocumentosAsociados) as IViewDocumentosAsociados; ViewDocumentos.ShowEmbedded(pagPlanos); end; pgPaginas.ActivePage := pagGeneral; end; procedure TfEditorMontajeCompleto.frViewCobrosMontaje1actAnadirExecute(Sender: TObject); var ACobrosMontajeController: ICobrosMontajeController; ACobroMontaje: IBizCobroMontaje; begin //Antes de añadir cobros al montaje validamos el montaje por si faltasen datos //y lo guardamos para evitar que se cancele el montaje pero los cobros se den de alta if Montaje.EsNuevo then begin Controller.Guardar(Montaje); Montaje.Edit; end; try ACobrosMontajeController := (FController as IMontajesCompletoController).CobrosController; ACobroMontaje := (Montaje as IBizMontajeCompleto).Cobros; ACobrosMontajeController.Anadir(ACobroMontaje); ACobroMontaje.Montaje := (Montaje as IBizMontajeCompleto); ACobroMontaje.Cliente := (Montaje as IBizMontajeCompleto).Cliente; ACobrosMontajeController.Ver(ACobroMontaje); finally ACobrosMontajeController := Nil; ACobroMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewCobrosMontaje1actEliminarExecute(Sender: TObject); var ACobrosMontajeController: ICobrosMontajeController; ACobroMontaje: IBizCobroMontaje; begin try if (Application.MessageBox('¿Desea borrar este cobro de cliente?', 'Atención', MB_YESNO) = IDYES) then begin ACobrosMontajeController := (FController as IMontajesCompletoController).CobrosController; ACobroMontaje := (Montaje as IBizMontajeCompleto).Cobros; ACobrosMontajeController.Eliminar(ACobroMontaje); end; finally ACobrosMontajeController := Nil; ACobroMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewCobrosMontaje1actModificarExecute(Sender: TObject); var ACobrosMontajeController: ICobrosMontajeController; ACobroMontaje: IBizCobroMontaje; begin try ACobrosMontajeController := (FController as IMontajesCompletoController).CobrosController; ACobroMontaje := (Montaje as IBizMontajeCompleto).Cobros; ACobrosMontajeController.Ver(ACobroMontaje); finally ACobrosMontajeController := Nil; ACobroMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewCobrosMontajeAfterSummary(ASender: TcxDataSummary); begin if VarIsNull(ASender.FooterSummaryValues[0]) then frViewSituacionMontaje1.pImporteCobrado := 0 else frViewSituacionMontaje1.pImporteCobrado := ASender.FooterSummaryValues[0]; end; procedure TfEditorMontajeCompleto.frViewGastosMontaje1actAnadirExecute( Sender: TObject); var AGastosMontajeController: IGastosMontajeController; AGastoMontaje: IBizGastosMontaje; begin try AGastosMontajeController := (FController as IMontajesCompletoController).GastosController; AGastoMontaje := (Montaje as IBizMontajeCompleto).Gastos; AGastosMontajeController.Anadir(AGastoMontaje); // ACobroMontaje.Montaje := (Montaje as IBizMontajeCompleto); // ACobroMontaje.Cliente := (Montaje as IBizMontajeCompleto).Cliente; // ACobrosMontajeController.Ver(ACobroMontaje); finally AGastosMontajeController := Nil; AGastoMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewGastosMontaje1actEliminarExecute( Sender: TObject); var AGastosMontajeController: IGastosMontajeController; AGastoMontaje: IBizGastosMontaje; begin try AGastosMontajeController := (FController as IMontajesCompletoController).GastosController; AGastoMontaje := (Montaje as IBizMontajeCompleto).Gastos; AGastosMontajeController.Eliminar(AGastoMontaje); // ACobroMontaje.Montaje := (Montaje as IBizMontajeCompleto); // ACobroMontaje.Cliente := (Montaje as IBizMontajeCompleto).Cliente; // ACobrosMontajeController.Ver(ACobroMontaje); finally AGastosMontajeController := Nil; AGastoMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewGastosMontajeAfterSummary(ASender: TcxDataSummary); begin if VarIsNull(ASender.FooterSummaryValues[1]) then frViewSituacionMontaje1.pImporteOtrosGastos := 0 else frViewSituacionMontaje1.pImporteOtrosGastos := ASender.FooterSummaryValues[1]; end; procedure TfEditorMontajeCompleto.frViewPedidosMontaje1actAnadirExecute(Sender: TObject); var APedidosMontajeController: IPedidosMontajeController; APedidoMontaje: IBizPedidoMontaje; begin //Antes de añadir pedidos al montaje validamos el montaje por si faltasen datos //y lo guardamos para evitar que se cancele el montaje pero los pedidos se den de alta if Montaje.EsNuevo then begin Controller.Guardar(Montaje); Montaje.Edit; end; try APedidosMontajeController := (FController as IMontajesCompletoController).PedidosController; APedidoMontaje := (Montaje as IBizMontajeCompleto).Pedidos; APedidosMontajeController.Anadir(APedidoMontaje); APedidoMontaje.Montaje := (Montaje as IBizMontajeCompleto); APedidosMontajeController.Ver(APedidoMontaje); finally APedidosMontajeController := Nil; APedidoMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewPedidosMontaje1actEliminarExecute(Sender: TObject); var APedidosMontajeController: IPedidosMontajeController; APedidoMontaje: IBizPedidoMontaje; begin try if (Application.MessageBox('¿Desea borrar este pedido a proveedor?', 'Atención', MB_YESNO) = IDYES) then begin APedidosMontajeController := (FController as IMontajesCompletoController).PedidosController; APedidoMontaje := (Montaje as IBizMontajeCompleto).Pedidos; APedidosMontajeController.Eliminar(APedidoMontaje); end; finally APedidosMontajeController := Nil; APedidoMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewPedidosMontaje1actModificarExecute(Sender: TObject); var APedidosMontajeController: IPedidosMontajeController; APedidoMontaje: IBizPedidoMontaje; begin try APedidosMontajeController := (FController as IMontajesCompletoController).PedidosController; APedidoMontaje := (Montaje as IBizMontajeCompleto).Pedidos; APedidosMontajeController.Ver(APedidoMontaje); finally APedidosMontajeController := Nil; APedidoMontaje := Nil; end; end; procedure TfEditorMontajeCompleto.frViewPedidosMontajeAfterSummary(ASender: TcxDataSummary); begin if VarIsNull(ASender.FooterSummaryValues[1]) then frViewSituacionMontaje1.pImportePedidos := 0 else frViewSituacionMontaje1.pImportePedidos := ASender.FooterSummaryValues[1]; end; function TfEditorMontajeCompleto.GetViewDocumentos: IViewDocumentosAsociados; begin Result := FViewDocumentos; end; procedure TfEditorMontajeCompleto.JvFormStorageRestorePlacement(Sender: TObject); var Path: String; begin inherited; Path := JvAppRegistryStorage.Root; frViewPedidosMontaje1._FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + frViewPedidosMontaje1.Name, False, False, []); frViewGastosMontaje1._FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + frViewGastosMontaje1.Name, False, False, []); frViewCobrosMontaje1._FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + frViewCobrosMontaje1.Name, False, False, []); end; procedure TfEditorMontajeCompleto.JvFormStorageSavePlacement(Sender: TObject); var Path: String; begin inherited; Path := JvAppRegistryStorage.Root; frViewPedidosMontaje1._FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + frViewPedidosMontaje1.Name, False, []); frViewGastosMontaje1._FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + frViewGastosMontaje1.Name, False, []); frViewCobrosMontaje1._FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + frViewCobrosMontaje1.Name, False, []); end; procedure TfEditorMontajeCompleto.SetController(const Value: IMontajesController); begin inherited; if Assigned(FController) then begin frViewPedidosMontaje1.Controller := (Controller as IMontajesCompletoController).PedidosController; frViewCobrosMontaje1.Controller := (Controller as IMontajesCompletoController).CobrosController; end; end; procedure TfEditorMontajeCompleto.SetMontaje(const Value: IBizMontaje); begin inherited; if Assigned(FViewMontaje) then begin frViewGastosMontaje1.Gastos := (FMontaje as IBizMontajeCompleto).Gastos; frViewPedidosMontaje1.Pedidos := (FMontaje as IBizMontajeCompleto).Pedidos; frViewCobrosMontaje1.Cobros := (FMontaje as IBizMontajeCompleto).Cobros; frViewSituacionMontaje1.dsDataTable.DataTable := dsDataTable.DataTable; end; //DOCUMENTOS ASOCIADOS if Assigned(FViewDocumentos) then if Assigned((Montaje as IBizDocumentosAsociados).GestorDocumentos) then begin FViewDocumentos.GestorDocumentos := (Montaje as IBizDocumentosAsociados).GestorDocumentos; FViewDocumentos.GestorDocumentos.ModoInsert := (Montaje.DataTable.State = dsInsert); pagPlanos.TabVisible := True; end else begin Showmessage('La ruta de documentos asociados no es accesible, se procederá a desactivar la funcionalidad'); pagPlanos.TabVisible := False; end; end; procedure TfEditorMontajeCompleto.SetViewDocumentos(const Value: IViewDocumentosAsociados); begin FViewDocumentos := Value; if Assigned(FViewDocumentos) and Assigned(Montaje) then if Assigned((Montaje as IBizDocumentosASociados).GestorDocumentos) then FViewDocumentos.GestorDocumentos := (Montaje as IBizDocumentosASociados).GestorDocumentos; end; end.