git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@160 c93665c3-c93d-084d-9b98-7d5f4a9c3376
65 lines
1.8 KiB
ObjectPascal
65 lines
1.8 KiB
ObjectPascal
unit uCalculosUtils;
|
|
|
|
interface
|
|
|
|
uses
|
|
uDADataTable, uDAInterfaces;
|
|
|
|
const
|
|
CAMPO_CANTIDAD = 'CANTIDAD';
|
|
CAMPO_IMPORTE_UNIDAD = 'IMPORTE_UNIDAD';
|
|
CAMPO_IMPORTE_TOTAL = 'IMPORTE_TOTAL';
|
|
CAMPO_DESCUENTO = 'DESCUENTO';
|
|
CAMPO_IMPORTE_PORTE = 'IMPORTE_PORTE';
|
|
|
|
function CalcularLineaConcepto (const ADataTable : TDADataTable): Double;
|
|
procedure ValidarCamposLineaConcepto(DataTable: TDADataTable);
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
SysUtils, Variants;
|
|
|
|
function CalcularLineaConcepto (const ADataTable : TDADataTable): Double;
|
|
var
|
|
ImporteTotal : Double;
|
|
begin
|
|
ImporteTotal := 0;
|
|
|
|
with ADataTable do
|
|
begin
|
|
if (VarIsNull(FieldByName(CAMPO_DESCUENTO).AsVariant)) then
|
|
ImporteTotal := FieldByName(CAMPO_CANTIDAD).asInteger * FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat
|
|
else
|
|
ImporteTotal := FieldByName(CAMPO_CANTIDAD).asInteger * (FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat - (FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat * (FieldByName(CAMPO_DESCUENTO).AsFloat/100)));
|
|
|
|
if (VarIsNull(FieldByName(CAMPO_IMPORTE_PORTE).AsVariant)) then
|
|
ImporteTotal := ImporteTotal
|
|
else
|
|
ImporteTotal := ImporteTotal + (FieldByName(CAMPO_CANTIDAD).asInteger * FieldByName(CAMPO_IMPORTE_PORTE).AsFloat);
|
|
end;
|
|
|
|
Result := ImporteTotal;
|
|
end;
|
|
|
|
procedure ValidarCamposLineaConcepto(DataTable: TDADataTable);
|
|
var
|
|
AField: TDAField;
|
|
begin
|
|
//Validamos la existencia de todos los campos necesarios
|
|
AField := DataTable.FindField(CAMPO_DESCUENTO);
|
|
if not Assigned(AField) then
|
|
raise Exception.Create('Campo ' + CAMPO_DESCUENTO + ' no encontrado (validarCampos)');
|
|
|
|
|
|
AField := DataTable.FindField(CAMPO_IMPORTE_PORTE);
|
|
if not Assigned(AField) then
|
|
raise Exception.Create('Campo ' + CAMPO_IMPORTE_PORTE + ' no encontrado (validarCampos)');
|
|
end;
|
|
|
|
|
|
|
|
|
|
end.
|