AbetoDesign_FactuGES2/Source/Modulos/Contratos de cliente/Views/uEditorContratoCliente.pas

650 lines
24 KiB
ObjectPascal
Raw Blame History

unit uEditorContratoCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewIncidencias,
uContratosClienteController,
uViewDetallesBase,
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uIEditorContratoCliente, uBizContratosCliente, uViewContratoCliente,
uViewDetallesDTO, uViewDetallesArticulos, uViewDetallesContratoCliente,
uDAInterfaces, cxRichEdit, cxDBRichEdit, JvGIF, cxPC,
uViewDocumentos,
uViewDocumentosContratoCliente, uViewDatosYSeleccionClienteContrato,
cxLabel, uBizTiposIVA, uTiposIVAController;
type
TfEditorContratoCliente = class(TfEditorDBItem, IEditorContratoCliente)
pagContenido: TTabSheet;
pagInicidencias: TTabSheet;
frViewIncidenciasCli: TfrViewIncidencias;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem7: TTBXItem;
TBXSeparatorItem6: TTBXSeparatorItem;
actEnviarPorEMail: TAction;
TBXItem34: TTBXItem;
TBXItem35: TTBXItem;
pagDocumentos: TTabSheet;
frViewDocumentosContratoCliente1: TfrViewDocumentosContratoCliente;
frViewTotales1: TfrViewTotales;
frViewDetallesContratoCliente1: TfrViewDetallesContratoCliente;
actRecalcularPrecioPunto: TAction;
actRecalcularDescuentoCapitulo: TAction;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
procedure actEnviarPorEMailExecute(Sender: TObject);
procedure actEnviarPorEMailUpdate(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure frViewTotales1bTiposIVAClick(Sender: TObject);
procedure frViewTotales1eIVAPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure OnRecargoEquivalenciaPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure actRecalcularPrecioPuntoExecute(Sender: TObject);
procedure OnPrecioPuntoPropertiesEditValueChanged(Sender: TObject);
procedure onPrecioPuntoPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure actRecalcularDescuentoCapituloExecute(Sender: TObject);
procedure OnDescuentoCapituloPropertiesEditValueChanged(Sender: TObject);
procedure onDescuentoCapituloPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
private
//procedure RecalcularPortePorUnidad;
protected
FContrato: IBizContratoCliente;
FTiposIVAController : ITiposIVAController;
FTiposIVA: IBizTipoIVA;
FViewContrato: IViewContratoCliente;
FViewClienteContrato :IViewDatosYSeleccionClienteContrato;
FController : IContratosClienteController;
function GetController : IContratosClienteController;
procedure SetController (const Value : IContratosClienteController); virtual;
function GetContrato: IBizContratoCliente;
procedure SetContrato(const Value: IBizContratoCliente); virtual;
function GetViewContrato: IViewContratoCliente;
procedure SetViewContrato(const Value: IViewContratoCliente);
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure RefrescarInterno; override;
property ViewContrato: IViewContratoCliente read GetViewContrato write SetViewContrato;
procedure OnClienteChanged(Sender : TObject);
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
procedure PonerTitulos(const ATitulo: string = ''); override;
function GetModified: Boolean; override;
procedure SetModified(const Value : Boolean); override;
function PuedoImprimir: Boolean; override;
public
property Controller : IContratosClienteController read GetController write SetController;
property Contrato: IBizContratoCliente read GetContrato write SetContrato;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionCliente, uDataModuleUsuarios, uClientesController,
uDialogOpcionesImpresionContratosCliente,
uBizDireccionesContacto, uDialogUtils, uFactuGES_App, uDataTableUtils;
{$R *.dfm}
{ TfEditorContratoCliente }
{
**************************** TfEditorContratoCliente ****************************
}
procedure TfEditorContratoCliente.actEliminarUpdate(Sender: TObject);
begin
inherited;
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := (FContrato.SITUACION = SITUACION_Contrato_PENDIENTE);
end;
procedure TfEditorContratoCliente.actEnviarPorEMailExecute(Sender: TObject);
begin
inherited;
FController.EnviarContratoPorEMail(Contrato);
end;
procedure TfEditorContratoCliente.actEnviarPorEMailUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos;
end;
procedure TfEditorContratoCliente.actRecalcularDescuentoCapituloExecute(Sender: TObject);
begin
ShowHourglassCursor;
try
inherited;
//Esta l<>gica se llamar<61> en el editor porque es para facilitar el rellenado de informaci<63>n del documento
//no puede ir en la clase de negocio porque no es una l<>gica que tenga sentido fuera del editor.
if (Contrato.Detalles.Datatable.State <> dsInactive)
and Assigned(Controller)
and Assigned(Controller.DetallesController) then
begin
Controller.DetallesController.DescuentoCapitulo := FContrato.DESCUENTO_CAPITULO;
if not Contrato.Detalles.DataTable.IsEmpty then
Controller.DetallesController.RecalcularDescuentoCapituloDetalles(FContrato.DESCUENTO_CAPITULO, FContrato.Detalles)
end;
finally
HideHourglassCursor;
end;
end;
procedure TfEditorContratoCliente.actRecalcularPrecioPuntoExecute(Sender: TObject);
begin
ShowHourglassCursor;
try
inherited;
//Esta l<>gica se llamar<61> en el editor porque es para facilitar el rellenado de informaci<63>n del documento
//no puede ir en la clase de negocio porque no es una l<>gica que tenga sentido fuera del editor.
if (Contrato.Detalles.Datatable.State <> dsInactive)
and (not Contrato.Detalles.DataTable.IsEmpty)
and Assigned(Controller)
and Assigned(Controller.DetallesController) then
begin
Controller.DetallesController.PrecioPunto := FContrato.PRECIO_PUNTO;
Controller.DetallesController.RecalcularPrecioPuntoDetalles(FContrato.PRECIO_PUNTO, FContrato.Detalles)
end;
finally
HideHourglassCursor;
end;
end;
procedure TfEditorContratoCliente.AsignarVista;
var
AViewContratoCliente: TfrViewContratoCliente;
begin
AViewContratoCliente := TfrViewContratoCliente.create(Self);
with AViewContratoCliente do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewContrato := AViewContratoCliente;
end;
constructor TfEditorContratoCliente.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
FTiposIVAController := TTiposIVAController.Create;
end;
procedure TfEditorContratoCliente.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := Nil;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := Nil;
inherited;
//GESTION_DOCUMENTOS
//Este m<>todo eliminar<61> el directorio temporal si se ha creado
frViewDocumentosContratoCliente1.actEliminarTodo.Execute;
FViewContrato := NIL;
FViewClienteContrato := NIL;
FContrato := NIL;
FTiposIVAController := Nil;
end;
destructor TfEditorContratoCliente.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorContratoCliente.EliminarInterno;
begin
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := Nil;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := Nil;
if (ShowConfirmMessage('<27>Desea borrar este Contrato de cliente?', '') = IDYES) then
begin
FController.Eliminar(FContrato);
inherited
end
end;
procedure TfEditorContratoCliente.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewContrato) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Contrato) then
raise Exception.Create('No hay ning<6E>n Contrato asignado');
//El usuario GERENCIA)
if (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_GERENCIA)
or (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR) then
begin
lblDesbloquear.Visible := True;
if Self.ReadOnly then
lblDesbloquear.Enabled := True
else
lblDesbloquear.Enabled := False;
end;
frViewTotales1.cbRecargoEquivalencia.Properties.OnValidate := OnRecargoEquivalenciaPropertiesValidate;
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := onPrecioPuntoPropertiesValidate;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := OnPrecioPuntoPropertiesEditValueChanged;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := onDescuentoCapituloPropertiesValidate;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := OnDescuentoCapituloPropertiesEditValueChanged;
pgPaginas.ActivePage := pagGeneral;
Contrato.DataTable.Active := True;
end;
procedure TfEditorContratoCliente.frViewTotales1bTiposIVAClick(
Sender: TObject);
begin
inherited;
FTiposIVAController.VerTodos(FTiposIVA);
end;
procedure TfEditorContratoCliente.frViewTotales1eIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
Contrato.Edit;
Contrato.ID_TIPO_IVA := FTiposIVA.ID; // ((frViewTotales1.dsTiposIVA.DataTable) as IBizTipoIVA).ID;
end;
procedure TfEditorContratoCliente.frViewTotales1ePortePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
{ if (not VarIsNull(DisplayValue)) and (Length(DisplayValue) > 0) then
FContrato.IMPORTE_PORTE := DisplayValue
else
FContrato.IMPORTE_PORTE := 0;
}
// RecalcularPortePorUnidad; En los documentos de cliente no se desglosa el porte por articulo
end;
function TfEditorContratoCliente.GetController: IContratosClienteController;
begin
Result := FController;
end;
function TfEditorContratoCliente.GetModified: Boolean;
begin
// inherited; <- No llamar al padre porque queremos tratamiento especial.
if ReadOnly then
Result := False
else begin
Result := DataTableModified(dsDataTable.DataTable);
if not Result then
Result := frViewDocumentosContratoCliente1.Modified;
end;
end;
function TfEditorContratoCliente.GetContrato: IBizContratoCliente;
begin
Result := FContrato;
end;
function TfEditorContratoCliente.GetViewContrato: IViewContratoCliente;
begin
Result := FViewContrato;
end;
procedure TfEditorContratoCliente.GuardarInterno;
var
bEsNuevo : Boolean;
begin
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := Nil;
//DESCUENTO_CAPITULOS EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := Nil;
inherited;
ShowHourglassCursor;
// frViewDetallesContratoCliente1.SaveGridStatus;
frViewDetallesContratoCliente1.BeginUpdate;
try
bEsNuevo := FContrato.EsNuevo;
//GESTION_DOCUMENTOS
if FController.Guardar(FContrato) then
frViewDocumentosContratoCliente1.actActualizarServidor.Execute;
finally
frViewDetallesContratoCliente1.EndUpdate;
// frViewDetallesContratoCliente1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
ShowInfoMessage('El Contrato se ha dado de alta con el c<>digo ' + FContrato.REFERENCIA);
Modified := False;
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := onPrecioPuntoPropertiesValidate;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := OnPrecioPuntoPropertiesEditValueChanged;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := onDescuentoCapituloPropertiesValidate;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := OnDescuentoCapituloPropertiesEditValueChanged;
end;
procedure TfEditorContratoCliente.ImprimirInterno;
var
FVerLogotipo: Boolean;
FImprimirPrecios : Boolean;
FImprimirTotales : Boolean;
FImprimirRefProveedor : Boolean;
FImprimirObservaciones: Boolean;
FImprimirIncidencias: Boolean;
begin
inherited;
FVerLogotipo := True;
FImprimirPrecios := False;
FImprimirTotales := True;
FImprimirRefProveedor := False;
FImprimirObservaciones := False;
FImprimirIncidencias := False;
if not Modified then
if ElegirOpcionesImpresionContratoCliente(FVerLogotipo, FImprimirPrecios, FImprimirTotales, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias) then
FController.Print(FContrato, False, FVerLogotipo, FImprimirPrecios, FImprimirTotales, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias);
end;
procedure TfEditorContratoCliente.OnClienteChanged(Sender: TObject);
var
APrimerCliente : Boolean;
begin
if Assigned(FContrato) then
begin
APrimerCliente := (FContrato.Cliente.ID = 0);
FContrato.Cliente := ViewContrato.ViewClienteContrato.Cliente;
if (ShowConfirmMessage('Cambio forma de pago y tipo de IVA', '<27>Desea actualizar la forma de pago y el tipo de IVA a la asignada en la ficha del cliente seleccionado?') = IDYES) then
FController.ActualizarFormaDePago(FContrato, FContrato.Cliente.ID_FORMA_PAGO);
if (not APrimerCliente) and (FContrato.Detalles.RecordCount > 0) then begin
if (ShowConfirmMessage('Actualizar precio punto del contrato y descuentos',
'<27>Desea actualizar el precio punto y los descuentos con los de la ficha del nuevo cliente seleccionado?' + #10#13 +
'S<>lo se cambiar<61>n las l<>neas que tengan cantidades.') = IDYES) then
begin
Controller.DetallesController.PrecioPunto := FContrato.Cliente.PRECIO_PUNTO;
Controller.DetallesController.DescuentoCapitulo := FContrato.Cliente.DESCUENTO_CAPITULO;
FController.ActualizarDescuentos(FContrato);
FController.ActualizarPrecioPunto(FContrato);
ShowInfoMessage('Se ha actualizado el contrato con el precio punto y descuentos del cliente seleccionado');
end;
end;
//Se refresca direcci<63>n de envio
ViewContrato.ViewDireccionEntregaContratoCli.ContratoCliente := FContrato;
end;
end;
procedure TfEditorContratoCliente.OnDescuentoCapituloPropertiesEditValueChanged(Sender: TObject);
begin
actRecalcularDescuentoCapitulo.Execute;
end;
procedure TfEditorContratoCliente.onDescuentoCapituloPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (ShowConfirmMessage('Va ha cambiar los descuentos de los capitulos, esto ocasionar<61> el recalculo de todo el contrato', '<27>Desea actualizar los importes de todos los descuentos de los cap<61>tulos del contrato?') = IDNO) then
DisplayValue := frViewDetallesContratoCliente1.edtDescuentoCapitulo.Value;
end;
procedure TfEditorContratoCliente.OnPrecioPuntoPropertiesEditValueChanged(
Sender: TObject);
begin
if not FContrato.EsNuevo then
actRecalcularPrecioPunto.Execute;
end;
procedure TfEditorContratoCliente.onPrecioPuntoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (ShowConfirmMessage('Va ha cambiar el precio punto, esto ocasionar<61> el recalculo de todos los art<72>culos del contrato que est<73>n en el cat<61>logo, los conceptos libres no se ver<65>n afectados', '<27>Desea actualizar los importes de todos los articulos del contrato, que est<73>n en el cat<61>logo?') = IDNO) then
DisplayValue := frViewDetallesContratoCliente1.edtPrecioPunto.Value;
end;
procedure TfEditorContratoCliente.OnRecargoEquivalenciaPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
if frViewTotales1.cbRecargoEquivalencia.Checked then
Contrato.RECARGO_EQUIVALENCIA := 1
else
Contrato.RECARGO_EQUIVALENCIA := 0;
end;
procedure TfEditorContratoCliente.pgPaginasChanging(Sender: TObject;
var AllowChange: Boolean);
var
ACadena : String;
begin
inherited;
if (not Assigned(FContrato)) or (FContrato.ID_CLIENTE = 0) then
begin
ACadena := 'Antes de introducir conceptos debe elegir un cliente para este Contrato';
ShowWarningMessage(ACadena);
AllowChange := False;
end
end;
procedure TfEditorContratoCliente.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FContrato) then
begin
if FContrato.EsNuevo then
FTitulo := 'Nuevo Contrato de cliente'
else
FTitulo := 'Contrato de cliente' + ' - ' + FContrato.Cliente.Nombre + ' - ' + FContrato.SITUACION;
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
end;
procedure TfEditorContratoCliente.PrevisualizarInterno;
var
FVerLogotipo: Boolean;
FImprimirPrecios : Boolean;
FImprimirTotales : Boolean;
FImprimirRefProveedor : Boolean;
FImprimirObservaciones: Boolean;
FImprimirIncidencias: Boolean;
begin
inherited;
FVerLogotipo := True;
FImprimirPrecios := False;
FImprimirTotales := True;
FImprimirRefProveedor := False;
FImprimirObservaciones := False;
FImprimirIncidencias := False;
if not Modified then
if ElegirOpcionesImpresionContratoCliente(FVerLogotipo, FImprimirPrecios, FImprimirTotales, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias) then
FController.Preview(FContrato, False, FVerLogotipo, FImprimirPrecios, FImprimirTotales, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias);
end;
{procedure TfEditorContratoCliente.RecalcularPortePorUnidad;
begin
//Esta l<>gica se llamar<61> en el editor porque es para facilitar el rellenado de informaci<63>n del documento
//no puede ir en la clase de negocio porque no es una l<>gica que tenga sentido fuera del editor.
if Assigned(Controller)
and Assigned(Controller.DetallesController) then
Controller.DetallesController.DesglosarPorteDetalles(FContrato.IMPORTE_PORTE, FContrato.Detalles)
end;}
procedure TfEditorContratoCliente.SetController(const Value: IContratosClienteController);
begin
FController := Value;
if Assigned(FController) then
begin
ViewContrato.Controller := Controller;
frViewDetallesContratoCliente1.Controller := Controller.DetallesController;
//GESTION_DOCUMENTOS
frViewDocumentosContratoCliente1.Controller := Controller;
// frViewTotales1.Controller := FController;
end;
end;
procedure TfEditorContratoCliente.SetModified(const Value: Boolean);
begin
inherited;
frViewDocumentosContratoCliente1.Modified := Value;
end;
function TfEditorContratoCliente.PuedoImprimir: Boolean;
begin
Result := inherited PuedoImprimir and (not Contrato.Cliente.IDIsNull);
end;
procedure TfEditorContratoCliente.RefrescarInterno;
begin
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := Nil;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := Nil;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := Nil;
inherited;
//PRECIO_PUNTO EVENTOS
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnValidate := onPrecioPuntoPropertiesValidate;
frViewDetallesContratoCliente1.edtPrecioPunto.Properties.OnEditValueChanged := OnPrecioPuntoPropertiesEditValueChanged;
//DESCUENTO_CAPITULO EVENTOS
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnValidate := onDescuentoCapituloPropertiesValidate;
frViewDetallesContratoCliente1.edtDescuentoCapitulo.Properties.OnEditValueChanged := OnDescuentoCapituloPropertiesEditValueChanged;
end;
procedure TfEditorContratoCliente.SetContrato(const Value: IBizContratoCliente);
begin
FContrato := Value;
if Assigned(FContrato) then
begin
dsDataTable.DataTable := FContrato.DataTable;
frViewIncidenciasCli.DADataSource.DataTable := dsDataTable.DataTable;
frViewTotales1.DADataSource.DataTable := FContrato.DataTable;
FTiposIVA := FTiposIVAController.BuscarTodos;
frViewTotales1.dsTiposIVA.DataTable := FTiposIVA.DataTable;
FTiposIVA.DataTable.Active := True;
if Assigned(FViewContrato) then
begin
ViewContrato.ViewClienteContrato.OnClienteChanged := NIL;
try
FViewContrato.Contrato := FContrato;
Controller.DetallesController.PrecioPunto := FContrato.PRECIO_PUNTO;
Controller.DetallesController.DescuentoCapitulo := FContrato.DESCUENTO_CAPITULO;
frViewDetallesContratoCliente1.Detalles := FContrato.Detalles;
frViewDetallesContratoCliente1.Contrato := FContrato; //Para poder sacar los descuento del articulos segun el cliente seleccionado
//GESTION_DOCUMENTOS
frViewDocumentosContratoCliente1.Contrato := FContrato;
finally
ViewContrato.ViewClienteContrato.OnClienteChanged := OnClienteChanged;
end;
end;
end;
end;
procedure TfEditorContratoCliente.SetViewContrato(const Value: IViewContratoCliente);
begin
FViewContrato := Value;
if Assigned(FViewContrato) then
begin
FViewClienteContrato := FViewContrato.ViewClienteContrato;
if Assigned(Contrato) then
FViewContrato.Contrato := Contrato;
end;
end;
end.