Ticket #110 -> En los presupuestos, al guardar uno, comprobar que todos los capítulos tienen subtotales
git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@590 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
parent
db52b8d125
commit
f3f7fd5c16
@ -53,57 +53,57 @@
|
|||||||
<DelphiCompile Include="Base.dpk">
|
<DelphiCompile Include="Base.dpk">
|
||||||
<MainSource>MainSource</MainSource>
|
<MainSource>MainSource</MainSource>
|
||||||
</DelphiCompile>
|
</DelphiCompile>
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\adortl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\adortl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxDataD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxDataD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxEditorsD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxEditorsD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxExportD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxExportD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxExtEditorsD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxExtEditorsD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxGridD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxGridD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxIntl6D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxIntl6D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxIntlPrintSys3D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxIntlPrintSys3D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxLibraryD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxLibraryD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\cxPageControlD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\cxPageControlD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\DataAbstract_Core_D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\DataAbstract_Core_D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dbrtl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dbrtl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dclIndyCore.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dclIndyCore.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\designide.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\designide.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dsnap.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dsnap.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dxGDIPlusD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dxGDIPlusD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dxPSCoreD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dxPSCoreD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\dxThemeD11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\dxThemeD11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\GUISDK_D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\GUISDK_D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\IndyCore.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\IndyCore.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\IndyProtocols.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\IndyProtocols.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\IndySystem.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\IndySystem.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\Jcl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\Jcl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JclVcl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JclVcl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JSDialog100.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JSDialog100.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvCmpD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvCmpD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvCoreD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvCoreD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvCtrlsD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvCtrlsD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvDlgsD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvDlgsD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvMMD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvMMD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvNetD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvNetD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvPageCompsD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvPageCompsD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvStdCtrlsD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvStdCtrlsD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\JvSystemD11R.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\JvSystemD11R.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\pckMD5.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\pckMD5.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\pckUCDataConnector.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\pckUCDataConnector.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\pckUserControl_RT.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\pckUserControl_RT.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\PngComponentsD10.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\PngComponentsD10.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\PNG_D10.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\PNG_D10.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\RemObjects_Core_D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\RemObjects_Core_D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\RemObjects_Indy_D11.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\RemObjects_Indy_D11.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\rtl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\rtl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\TB2k_D10.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\TB2k_D10.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\tbx_d10.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\tbx_d10.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\vcl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\vcl.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\vclactnband.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\vclactnband.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\vcldb.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\vcldb.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\vcljpg.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\vcljpg.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\VclSmp.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\VclSmp.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\vclx.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\vclx.dcp" />
|
||||||
<DCCReference Include="..\Modulos\Pedidos a proveedor\xmlrtl.dcp" />
|
<DCCReference Include="..\Modulos\Presupuestos de cliente\Views\xmlrtl.dcp" />
|
||||||
<DCCReference Include="..\Servicios\FactuGES_Intf.pas" />
|
<DCCReference Include="..\Servicios\FactuGES_Intf.pas" />
|
||||||
<DCCReference Include="Conexion\uConfigurarConexion.pas">
|
<DCCReference Include="Conexion\uConfigurarConexion.pas">
|
||||||
<Form>fConfigurarConexion</Form>
|
<Form>fConfigurarConexion</Form>
|
||||||
|
|||||||
@ -10,7 +10,7 @@ const
|
|||||||
TIPO_DETALLE_SUBTOTAL = 'Subtotal';
|
TIPO_DETALLE_SUBTOTAL = 'Subtotal';
|
||||||
TIPO_DETALLE_SALTO = 'Salto';
|
TIPO_DETALLE_SALTO = 'Salto';
|
||||||
TIPO_DETALLE_DESCUENTO = 'Descuento';
|
TIPO_DETALLE_DESCUENTO = 'Descuento';
|
||||||
|
TIPO_DETALLE_OPCIONAL = 'Opcional';
|
||||||
CTE_DESC_SALTO = 'SALTO DE PAGINA >>';
|
CTE_DESC_SALTO = 'SALTO DE PAGINA >>';
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -19,7 +19,7 @@ type
|
|||||||
IControllerDetallesBase = interface(ISujeto)
|
IControllerDetallesBase = interface(ISujeto)
|
||||||
['{F0B0E714-EC0D-4B6B-98B1-76F72F70B735}']
|
['{F0B0E714-EC0D-4B6B-98B1-76F72F70B735}']
|
||||||
|
|
||||||
function getTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String;
|
function GetTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String;
|
||||||
procedure Clear(ADataTable: IDAStronglyTypedDataTable);
|
procedure Clear(ADataTable: IDAStronglyTypedDataTable);
|
||||||
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant);
|
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant);
|
||||||
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray);
|
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray);
|
||||||
@ -35,6 +35,7 @@ type
|
|||||||
function LocalizarPosicion(ADataTable: IDAStronglyTypedDataTable; const APosicion: Integer): Boolean;
|
function LocalizarPosicion(ADataTable: IDAStronglyTypedDataTable; const APosicion: Integer): Boolean;
|
||||||
procedure Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer);
|
procedure Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer);
|
||||||
function DarListaTiposDetalle: TStringList;
|
function DarListaTiposDetalle: TStringList;
|
||||||
|
procedure ValidarCierreCapitulos(ADataTable: IDAStronglyTypedDataTable);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TControllerDetallesBase = class (TSujeto, IControllerDetallesBase)
|
TControllerDetallesBase = class (TSujeto, IControllerDetallesBase)
|
||||||
@ -63,6 +64,8 @@ type
|
|||||||
procedure CalculoDetalleSubtotal(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual;
|
procedure CalculoDetalleSubtotal(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual;
|
||||||
procedure TratamientoDetalleDescuento(DataTable: TDADataTable); virtual;
|
procedure TratamientoDetalleDescuento(DataTable: TDADataTable); virtual;
|
||||||
procedure CalculoDetalleDescuento(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual;
|
procedure CalculoDetalleDescuento(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual;
|
||||||
|
procedure TratamientoDetalleOpcional(DataTable: TDADataTable); virtual;
|
||||||
|
procedure CalculoDetalleOpcional(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual;
|
||||||
|
|
||||||
//Si sobreescribimos este metodo es para continuar el CalcularTotales segun los tipos de concepto de los hijos
|
//Si sobreescribimos este metodo es para continuar el CalcularTotales segun los tipos de concepto de los hijos
|
||||||
function CalcularTotalesHijos(Modificar: boolean; DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double): Double; virtual;
|
function CalcularTotalesHijos(Modificar: boolean; DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double): Double; virtual;
|
||||||
@ -71,7 +74,7 @@ type
|
|||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
function getTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String;
|
function GetTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String;
|
||||||
procedure Clear(ADataTable: IDAStronglyTypedDataTable);
|
procedure Clear(ADataTable: IDAStronglyTypedDataTable);
|
||||||
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); virtual;
|
procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); virtual;
|
||||||
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); virtual;
|
procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); virtual;
|
||||||
@ -86,6 +89,9 @@ type
|
|||||||
function DarTotalImporteTotal(ADataTable: IDAStronglyTypedDataTable): Double;
|
function DarTotalImporteTotal(ADataTable: IDAStronglyTypedDataTable): Double;
|
||||||
function DarListaTiposDetalle: TStringList; virtual;
|
function DarListaTiposDetalle: TStringList; virtual;
|
||||||
function LocalizarPosicion(ADataTable: IDAStronglyTypedDataTable; const APosicion: Integer): Boolean;
|
function LocalizarPosicion(ADataTable: IDAStronglyTypedDataTable; const APosicion: Integer): Boolean;
|
||||||
|
|
||||||
|
// Comprueba que todos los capitulos tengan su subtotal de cierre
|
||||||
|
procedure ValidarCierreCapitulos(ADataTable: IDAStronglyTypedDataTable);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -203,6 +209,13 @@ begin
|
|||||||
TratamientoDetalleConcepto(DataTable); //Se podrá sobreescribir para que se tengan en cuenta nuevos campos
|
TratamientoDetalleConcepto(DataTable); //Se podrá sobreescribir para que se tengan en cuenta nuevos campos
|
||||||
CalculoDetalleConcepto(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podrá sobreescribir para posibles nuevos calculos de los hijos
|
CalculoDetalleConcepto(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podrá sobreescribir para posibles nuevos calculos de los hijos
|
||||||
end
|
end
|
||||||
|
//OPCIONALES
|
||||||
|
else if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_OPCIONAL) then
|
||||||
|
begin
|
||||||
|
if Modificar then
|
||||||
|
TratamientoDetalleOpcional(DataTable); //Se podrá sobreescribir para que se tengan en cuenta nuevos campos en hijos
|
||||||
|
CalculoDetalleOpcional(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podrá sobreescribir para posibles nuevos calculos de los hijos
|
||||||
|
end
|
||||||
//HIJOS
|
//HIJOS
|
||||||
else CalcularTotalesHijos(Modificar, DataTable, AuxImporteAcumulado, AuxImporteTotal);
|
else CalcularTotalesHijos(Modificar, DataTable, AuxImporteAcumulado, AuxImporteTotal);
|
||||||
|
|
||||||
@ -243,12 +256,18 @@ begin
|
|||||||
begin
|
begin
|
||||||
if not Editing then Edit;
|
if not Editing then Edit;
|
||||||
ImporteDto := (-1)*((ImporteTotal * DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat) / 100);
|
ImporteDto := (-1)*((ImporteTotal * DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat) / 100);
|
||||||
ImporteTotal := ImporteTotal + ImporteDto;
|
ImporteTotal := ImporteTotal + ImporteDto;
|
||||||
FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat := ImporteTotal;
|
FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat := ImporteTotal;
|
||||||
Post;
|
Post;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TControllerDetallesBase.CalculoDetalleOpcional(
|
||||||
|
DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double);
|
||||||
|
begin
|
||||||
|
// No acumular ni sumar nada.
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesBase.CalculoDetalleSalto(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double);
|
procedure TControllerDetallesBase.CalculoDetalleSalto(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double);
|
||||||
begin
|
begin
|
||||||
with DataTable do
|
with DataTable do
|
||||||
@ -291,6 +310,7 @@ function TControllerDetallesBase.DarListaTiposDetalle: TStringList;
|
|||||||
begin
|
begin
|
||||||
Result := TStringList.Create;
|
Result := TStringList.Create;
|
||||||
Result.Values[TIPO_DETALLE_CONCEPTO] := TIPO_DETALLE_CONCEPTO;
|
Result.Values[TIPO_DETALLE_CONCEPTO] := TIPO_DETALLE_CONCEPTO;
|
||||||
|
Result.Values[TIPO_DETALLE_OPCIONAL] := TIPO_DETALLE_OPCIONAL;
|
||||||
Result.Values[TIPO_DETALLE_TITULO] := TIPO_DETALLE_TITULO;
|
Result.Values[TIPO_DETALLE_TITULO] := TIPO_DETALLE_TITULO;
|
||||||
Result.Values[TIPO_DETALLE_SUBTOTAL] := TIPO_DETALLE_SUBTOTAL;
|
Result.Values[TIPO_DETALLE_SUBTOTAL] := TIPO_DETALLE_SUBTOTAL;
|
||||||
//Result.Values[TIPO_DETALLE_DESCUENTO] := TIPO_DETALLE_DESCUENTO;
|
//Result.Values[TIPO_DETALLE_DESCUENTO] := TIPO_DETALLE_DESCUENTO;
|
||||||
@ -589,6 +609,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TControllerDetallesBase.TratamientoDetalleOpcional(
|
||||||
|
DataTable: TDADataTable);
|
||||||
|
begin
|
||||||
|
with DataTable do
|
||||||
|
begin
|
||||||
|
if not Editing then Edit;
|
||||||
|
//Si alguno de los campos de calculo de total es nulo el total tambien será nulo
|
||||||
|
if (VarIsNull(FieldByName(CAMPO_CANTIDAD).AsVariant) or
|
||||||
|
VarIsNull(FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant)) then
|
||||||
|
FieldByName(CAMPO_IMPORTE_TOTAL).AsVariant := Null
|
||||||
|
else
|
||||||
|
FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat := CalcularImporteTotalConcepto(DataTable);
|
||||||
|
Post;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesBase.TratamientoDetalleSalto(DataTable: TDADataTable);
|
procedure TControllerDetallesBase.TratamientoDetalleSalto(DataTable: TDADataTable);
|
||||||
begin
|
begin
|
||||||
with DataTable do
|
with DataTable do
|
||||||
@ -629,7 +665,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesBase.validarCampos(DataTable: TDADataTable);
|
procedure TControllerDetallesBase.ValidarCampos(DataTable: TDADataTable);
|
||||||
var
|
var
|
||||||
AField: TDAField;
|
AField: TDAField;
|
||||||
begin
|
begin
|
||||||
@ -651,4 +687,66 @@ begin
|
|||||||
raise Exception.Create('Campo ' + CAMPO_IMPORTE_TOTAL + ' no encontrado (validarCampos)');
|
raise Exception.Create('Campo ' + CAMPO_IMPORTE_TOTAL + ' no encontrado (validarCampos)');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TControllerDetallesBase.ValidarCierreCapitulos(
|
||||||
|
ADataTable: IDAStronglyTypedDataTable);
|
||||||
|
var
|
||||||
|
ATipoCampo : String;
|
||||||
|
bEnCapitulo : Boolean;
|
||||||
|
AuxPosicionIni : Integer;
|
||||||
|
AuxPosicion : Integer;
|
||||||
|
begin
|
||||||
|
bEnCapitulo := False;
|
||||||
|
ATipoCampo := '';
|
||||||
|
|
||||||
|
if (ADataTable.DataTable.State in dsEditModes) then
|
||||||
|
ADataTable.DataTable.Post;
|
||||||
|
|
||||||
|
ValidarCampos(ADataTable.DataTable);
|
||||||
|
|
||||||
|
AuxPosicionIni := ADataTable.DataTable.FieldByName(CAMPO_POSICION).AsInteger;
|
||||||
|
AuxPosicion := 0;
|
||||||
|
|
||||||
|
BeginUpdate(ADataTable);
|
||||||
|
try
|
||||||
|
ADataTable.DataTable.First;
|
||||||
|
while ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicion, []) do
|
||||||
|
begin
|
||||||
|
ATipoCampo := ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString;
|
||||||
|
|
||||||
|
if (ATipoCampo = TIPO_DETALLE_SUBTOTAL) and bEnCapitulo then
|
||||||
|
bEnCapitulo := False;
|
||||||
|
|
||||||
|
if (ATipoCampo = TIPO_DETALLE_TITULO) then
|
||||||
|
begin
|
||||||
|
if bEnCapitulo then
|
||||||
|
begin
|
||||||
|
ADataTable.DataTable.First;
|
||||||
|
if ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicion-1, []) then
|
||||||
|
begin
|
||||||
|
Add(ADataTable, TIPO_DETALLE_SUBTOTAL);
|
||||||
|
bEnCapitulo := False;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
bEnCapitulo := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Inc(AuxPosicion);
|
||||||
|
ADataTable.DataTable.First;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// ¿Se ha acabado la tabla y queda algún capítulo sin cerrar?
|
||||||
|
if bEnCapitulo then
|
||||||
|
if ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicion-1, []) then
|
||||||
|
begin
|
||||||
|
Add(ADataTable, TIPO_DETALLE_SUBTOTAL);
|
||||||
|
bEnCapitulo := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
//Dejamos el puntero en la misma posición que la que partió
|
||||||
|
ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicionIni, []);
|
||||||
|
EndUpdate(ADataTable);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
@ -452,7 +452,10 @@ begin
|
|||||||
|
|
||||||
if (APresupuesto.Detalles.DataTable.RecordCount = 0) then
|
if (APresupuesto.Detalles.DataTable.RecordCount = 0) then
|
||||||
raise Exception.Create('El presupuesto debe tener en su contenido al menos un concepto');
|
raise Exception.Create('El presupuesto debe tener en su contenido al menos un concepto');
|
||||||
|
|
||||||
|
|
||||||
|
FDetallesController.ValidarCierreCapitulos(APresupuesto.Detalles);
|
||||||
|
|
||||||
{ Asegurarse de valores en campos "automáticos" tanto
|
{ Asegurarse de valores en campos "automáticos" tanto
|
||||||
en MODIFICACIÓN como en INSERCIÓN. }
|
en MODIFICACIÓN como en INSERCIÓN. }
|
||||||
APresupuesto.Edit;
|
APresupuesto.Edit;
|
||||||
|
|||||||
Binary file not shown.
@ -14,7 +14,7 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileVersion", "1.3.1.0\0"
|
VALUE "FileVersion", "1.3.1.0\0"
|
||||||
VALUE "ProductVersion", "1.3.1.0\0"
|
VALUE "ProductVersion", "1.3.1.0\0"
|
||||||
VALUE "CompileDate", "miércoles, 10 de septiembre de 2008 18:00\0"
|
VALUE "CompileDate", "lunes, 15 de septiembre de 2008 17:04\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user