unit uBizDetallesPresupuestoCliente; interface uses uDADataTable, schPresupuestosClienteClient_Intf; const BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE = 'Client.PresupuestoCliente.Detalles'; type IBizDetallesPresupuestoCliente = interface(IPresupuestosCliente_Detalles) ['{2D7781DC-AD16-4857-9567-5C1620319781}'] end; TBizDetallesPresupuestoCliente = class(TPresupuestosCliente_DetallesDataTableRules, IBizDetallesPresupuestoCliente) protected procedure OnNewRecord(Sender: TDADataTable); override; procedure BeforeInsert(Sender: TDADataTable); override; procedure BeforePost(Sender: TDADataTable); override; end; implementation { TBizDetallesPresupuestoCliente } uses Dialogs, DB, SysUtils, JclStrings; const SALTO_LINEA = #13#10; //--> #$D#$A PARRAFO_FINAL = '\par}'; procedure TBizDetallesPresupuestoCliente.BeforeInsert(Sender: TDADataTable); var AMasterTable : TDADataTable; begin inherited; AMasterTable := DataTable.GetMasterDataTable; if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then AMasterTable.Post; end; procedure TBizDetallesPresupuestoCliente.BeforePost(Sender: TDADataTable); begin inherited; // Hay que quitar los saltos de línea que puedan estar en CONCEPTO CONCEPTO := StringReplace(CONCEPTO, SALTO_LINEA, '', [rfReplaceAll]); if StrStrCount(CONCEPTO, PARRAFO_FINAL) > 0 then CONCEPTO := StrEnsureNoSuffix(PARRAFO_FINAL, CONCEPTO) + '}'; end; procedure TBizDetallesPresupuestoCliente.OnNewRecord(Sender: TDADataTable); begin inherited; VISIBLE := 1; end; initialization RegisterDataTableRules(BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE, TBizDetallesPresupuestoCliente); end.