TOPCAB implemented

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TOPCAB_implemented (Cabecera de ordenes de pago OPCAB.) extiende a ORDENES PAGO.

Identidad

Declaración

type
  TOPCAB_implemented = class(TCMPCABECERA_PRAGMA_XTD_implemented)
  private
    FLiquida_Moneda: String;
    FLiquida_Fecha: TDatetime;
    FLiquida_Cotizacion: Double;
    FLiquidando: Boolean;
  protected
    function    Redondear(aNumero: Double; aDecs: Integer): Double;
  public
    property    Liquida_Fecha: TDatetime read FLiquida_Fecha write FLiquida_Fecha;
    property    Liquida_Moneda: String read FLiquida_Moneda write FLiquida_Moneda;
    property    Liquida_Cotizacion: Double read FLiquida_Cotizacion write FLiquida_Cotizacion;
    property    Liquidando: Boolean read FLiquidando;

    constructor Create(AOwner: TComponent); override;
    destructor  Destroy;  override;
    procedure   Loaded; override;

    procedure   GetPopupOptions(Sender: TprxPopupMenu); override;

    function    PuedeRegistrar(var aMsg: String; aOP: String): Boolean; override;

    procedure   Totalizar;
    function    EsCodigoTemporario: Boolean;
    procedure   LiquidarClick(Sender: TObject); overload;
    procedure   LiquidarClick(aLiquida_Moneda: String; aLiquida_Fecha: TDatetime; aLiquida_Cotizacion: Double; aLiquida_Retenciones: Boolean; aLiquidaOriginal: Boolean); overload;
    procedure   CalcularRetenciones(aLiquida_Fecha: TDatetime; aLiquida: Boolean);

    function    UpdateBatchXtd(AffectRecords: TAffectRecords = arAll): Boolean; override;

    function    ReabrirComprobante: Boolean; override;
  published
  end;

Implementación

function PuedeRegistrar(var aMsg: String; aOP: String): Boolean

Verifica con COMPROBANTES/PERIODOS si el comprobante tiene una fecha válida según la fecha de liquidación y no la del comprobante.

function Redondear(aNumero: Double; aDecs: Integer): Double

Función que redondea un cálculo a dos decimales usando SQL.

procedure Totalizar

Totaliza los comprobantes y los asigna a los FDEBITOS y FCREDITOS, luego calcula el neto restando también las FRETENCIONES.

procedure LiquidarClick

Calcula la liquidación de la orden de pago:

  • Primero aplica la cotización de liquidación a cada comprobante cuando corresponda, con eso calcula el nuevo monto a pagar.
  • Con los nuevos importes calcula las retenciones.
  • Refresca los totales del comprobante.
  • Actualiza los datos del comprobante en la base de datos.

procedure CalcularRetenciones(aLiquida_Fecha: TDatetime; aLiquida: Boolean)

Calcula las retenciones del comprobante.