unit uBizComisiones; interface uses uDAInterfaces, uDADataTable, schComisionesClient_Intf, uDBSelectionListUtils, Classes; // uBizContactos, uBizDetallesFacturaCliente const BIZ_CLIENT_COMISIONES = 'Client.Comisiones'; BIZ_CLIENT_FACTURASCOMISION = 'Client.FacturasComision'; type IBizFacturasComision = interface(IFacturasComision) ['{341B5CD1-2BCD-43F5-8F0C-AF72C1780512}'] end; IBizComision = interface(IComisiones) ['{78E17CC4-F4A6-489D-99C3-2D56F8730A33}'] function GetFacturasComision: IBizFacturasComision; procedure SetFacturasComision(Value: IBizFacturasComision); property FacturasComision: IBizFacturasComision read GetFacturasComision write SetFacturasComision; procedure CalcularImporteTotal; end; TBizFacturasComision = class(TFacturasComisionDataTableRules, IBizFacturasComision) end; TBizComision = class(TComisionesDataTableRules, IBizComision, ISeleccionable) private FSeleccionableInterface : ISeleccionable; procedure CalcularComision; protected FFacturasComision : IBizFacturasComision; FFacturasComisionLink : TDADataSource; function GetFacturasComision: IBizFacturasComision; procedure SetFacturasComision(Value: IBizFacturasComision); procedure COMISIONOnChange(Sender: TDACustomField); public procedure CalcularImporteTotal; property FacturasComision: IBizFacturasComision read GetFacturasComision write SetFacturasComision; property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses SysUtils, uDataTableUtils, DB, uDateUtils, DateUtils, uDataModuleUsuarios, Variants, cxDateUtils, uFactuGES_App; { TBizComision } procedure TBizComision.CalcularComision; begin { if not Self.DataTable.Editing then Edit; IMPORTE_COMISION := (COMISION / 100) * BASE_IMPONIBLE; } end; {procedure TBizComision.CalcularDescuento; begin if not Self.DataTable.Editing then Edit; IMPORTE_DESCUENTO := (DESCUENTO / 100) * IMPORTE_NETO; end;} procedure TBizComision.CalcularImporteTotal; begin { DataTable.DisableControls; DataTable.Fields.FieldEventsDisabled := True; try if not Self.DataTable.Editing then Edit; IMPORTE_TOTAL := BASE_IMPONIBLE + IMPORTE_IVA + IMPORTE_RE; finally DataTable.Fields.FieldEventsDisabled := False; DataTable.EnableControls; end; } end; procedure TBizComision.COMISIONOnChange(Sender: TDACustomField); begin CalcularImporteTotal; end; constructor TBizComision.Create(aDataTable: TDADataTable); begin inherited; { with DataTable do begin FieldByName(fld_FacturasClienteID_TIPO_IVA).OnChange := ID_TIPO_IVAOnChange; FieldByName(fld_FacturasClienteRECARGO_EQUIVALENCIA).OnChange := RECARGO_EQUIVALENCIAOnChange; FieldByName(fld_FacturasClienteIMPORTE_NETO).OnChange := IMPORTE_NETOOnChange; FieldByName(fld_FacturasClienteIMPORTE_PORTE).OnChange := IMPORTE_PORTEOnChange; FieldByName(fld_FacturasClienteDESCUENTO).OnChange := DESCUENTOOnChange; FieldByName(fld_FacturasClienteDESCUENTO2).OnChange := DESCUENTO2OnChange; FieldByName(fld_FacturasClienteCOMISION).OnChange := COMISIONOnChange; FieldByName(fld_FacturasClienteIVA).OnChange := IVAOnChange; FieldByName(fld_FacturasClienteRE).OnChange := REOnChange; end; } FFacturasComisionLink := TDADataSource.Create(NIL); FFacturasComisionLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizComision.Destroy; begin FFacturasComision := NIL; FFacturasComisionLink.Free; FSeleccionableInterface := NIL; inherited; end; function TBizComision.GetFacturasComision: IBizFacturasComision; begin Result := FFacturasComision; end; procedure TBizComision.SetFacturasComision(Value: IBizFacturasComision); begin FFacturasComision := Value; EnlazarMaestroDetalle(FFacturasComisionLink, FFacturasComision); end; initialization RegisterDataTableRules(BIZ_CLIENT_COMISIONES, TBizComision); RegisterDataTableRules(BIZ_CLIENT_FACTURASCOMISION, TBizFacturasComision); finalization end.