git-svn-id: https://192.168.0.254/svn/Proyectos.ConstruccionesCNJ_FactuGES/trunk@4 6cb6b671-b4a0-dd4c-8bdc-3006503d97e9
176 lines
5.0 KiB
ObjectPascal
176 lines
5.0 KiB
ObjectPascal
unit uBizMontajesDetalles;
|
|
|
|
interface
|
|
|
|
uses
|
|
uDAInterfaces, uDADataTable, schMontajesClient_Intf,
|
|
uBizContactos,
|
|
uBizMontajes, uBizPresupuestos, Classes, uDBSelectionListUtils;
|
|
|
|
const
|
|
BIZ_CLIENT_MONTAJE_DETALLES = 'Client.Montaje.Detalles';
|
|
BIZ_CLIENT_DETALLES_MONTAJE = 'Client.DetallesMontaje';
|
|
|
|
type
|
|
IBizDetallesMontaje = interface(IMontajes_Detalles)
|
|
['{053FA316-8E38-470F-ABBE-B9534112D0D6}']
|
|
function EsNuevo: Boolean;
|
|
end;
|
|
|
|
IBizMontajeDetalles = interface(IBizMontaje)
|
|
['{0E5E7B4C-3FBF-45BF-B5F7-170DB6A906C5}']
|
|
function GetDetalles: IBizDetallesMontaje;
|
|
procedure SetDetalles(Value: IBizDetallesMontaje);
|
|
property Detalles: IBizDetallesMontaje read GetDetalles write SetDetalles;
|
|
|
|
procedure SetPresupuesto(AValue : IBizPresupuesto);
|
|
function GetPresupuesto : IBizPresupuesto;
|
|
property Presupuesto : IBizPresupuesto read GetPresupuesto write SetPresupuesto;
|
|
end;
|
|
|
|
//Clase de negocio de los detalles del montaje
|
|
TBizDetallesMontaje = class(TMontajes_DetallesDataTableRules, IBizDetallesMontaje)
|
|
private
|
|
FContadorID: Integer;
|
|
protected
|
|
procedure OnNewRecord(Sender: TDADataTable); override;
|
|
public
|
|
function EsNuevo: Boolean;
|
|
constructor Create(aDataTable: TDADataTable); override;
|
|
end;
|
|
|
|
//Clase de negocio de montajes a los que le añadimos detalles
|
|
TBizMontajeDetalles = class(TBizMontaje, IBizMontajeDetalles)
|
|
protected
|
|
FPresupuesto : IBizPresupuesto;
|
|
FDetalles : IBizDetallesMontaje;
|
|
FDetallesLink : TDADataSource;
|
|
function GetDetalles: IBizDetallesMontaje;
|
|
procedure SetDetalles(Value: IBizDetallesMontaje);
|
|
procedure SetPresupuesto(AValue : IBizPresupuesto);
|
|
function GetPresupuesto : IBizPresupuesto;
|
|
|
|
public
|
|
property Presupuesto : IBizPresupuesto read GetPresupuesto write SetPresupuesto;
|
|
property Detalles: IBizDetallesMontaje read GetDetalles write SetDetalles;
|
|
constructor Create(aDataTable: TDADataTable); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
SysUtils, uDataTableUtils, DB, uDateUtils, DateUtils, uDataModuleUsuarios,
|
|
Variants, cxDateUtils, Forms, Windows;
|
|
|
|
{ TBizMontajeDetalles }
|
|
|
|
constructor TBizMontajeDetalles.Create(aDataTable: TDADataTable);
|
|
begin
|
|
inherited;
|
|
FPresupuesto := Nil;
|
|
FDetallesLink := TDADataSource.Create(NIL);
|
|
FDetallesLink.DataTable := aDataTable;
|
|
end;
|
|
|
|
destructor TBizMontajeDetalles.Destroy;
|
|
begin
|
|
FPresupuesto := Nil;
|
|
FDetalles := NIL;
|
|
FDetallesLink.Free;
|
|
inherited;
|
|
end;
|
|
|
|
function TBizMontajeDetalles.GetDetalles: IBizDetallesMontaje;
|
|
begin
|
|
Result := FDetalles;
|
|
end;
|
|
|
|
function TBizMontajeDetalles.GetPresupuesto: IBizPresupuesto;
|
|
begin
|
|
Result := FPresupuesto;
|
|
end;
|
|
|
|
procedure TBizMontajeDetalles.SetDetalles(Value: IBizDetallesMontaje);
|
|
begin
|
|
FDetalles := Value;
|
|
EnlazarMaestroDetalle(FDetallesLink, FDetalles);
|
|
end;
|
|
|
|
procedure TBizMontajeDetalles.SetPresupuesto(AValue: IBizPresupuesto);
|
|
begin
|
|
FPresupuesto := AValue;
|
|
|
|
if Assigned(FPresupuesto) then
|
|
begin
|
|
if not FPresupuesto.DataTable.Active then
|
|
FPresupuesto.DataTable.Active := True;
|
|
|
|
if ID_PRESUPUESTO <> FPresupuesto.ID then
|
|
begin
|
|
DataTable.Edit;
|
|
ID_PRESUPUESTO := FPresupuesto.ID;
|
|
REFERENCIA := FPresupuesto.REFERENCIA;
|
|
|
|
if (Application.MessageBox('¿Desea asignar los conceptos del presupuesto a los del montaje?', 'Atención', MB_YESNO) = IDYES) then
|
|
begin
|
|
IMPORTE_TOTAL := FPresupuesto.IMPORTE_TOTAL;
|
|
|
|
if Assigned(FPresupuesto.Detalles) then
|
|
begin
|
|
//Copiamos los detalles del presupuesto
|
|
with FPresupuesto.Detalles do
|
|
begin
|
|
//Borramos los que tuviera antes
|
|
Detalles.DataTable.ClearRows;
|
|
|
|
DataTable.First;
|
|
while not DataTable.EOF do
|
|
begin
|
|
Detalles.Insert;
|
|
Detalles.POSICION := POSICION;
|
|
Detalles.TIPO_DETALLE := TIPO_DETALLE;
|
|
Detalles.CONCEPTO := CONCEPTO;
|
|
Detalles.CANTIDAD := CANTIDAD;
|
|
Detalles.DESCUENTO := DESCUENTO;
|
|
Detalles.IMPORTE_UNIDAD := IMPORTE_UNIDAD;
|
|
Detalles.IMPORTE_TOTAL := IMPORTE_TOTAL;
|
|
Detalles.Post;
|
|
DataTable.Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
{ TBizDetallesMontaje }
|
|
|
|
constructor TBizDetallesMontaje.Create(aDataTable: TDADataTable);
|
|
begin
|
|
inherited Create(aDataTable);
|
|
FContadorID := -1;
|
|
end;
|
|
|
|
function TBizDetallesMontaje.EsNuevo: Boolean;
|
|
begin
|
|
Result := (ID < 0);
|
|
end;
|
|
|
|
procedure TBizDetallesMontaje.OnNewRecord(Sender: TDADataTable);
|
|
begin
|
|
inherited;
|
|
ID := FContadorID; // -1, -2, -3...
|
|
Dec(FContadorID);
|
|
end;
|
|
|
|
initialization
|
|
RegisterDataTableRules(BIZ_CLIENT_MONTAJE_DETALLES, TBizMontajeDetalles);
|
|
RegisterDataTableRules(BIZ_CLIENT_DETALLES_MONTAJE, TBizDetallesMontaje);
|
|
|
|
finalization
|
|
|
|
end.
|
|
|