Cambios para arreglo de los descuentos y cantidades en los detalles de los documentos
git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@129 f4e31baf-9722-1c47-927c-6f952f962d4b
This commit is contained in:
parent
05b91e6029
commit
dfffba6c4a
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesAlbaranClienteController = interface(IControllerDetallesArticulos)
|
IDetallesAlbaranClienteController = interface(IControllerDetallesArticulos)
|
||||||
['{6AD99D47-2856-47B1-9620-DD115726B0E1}']
|
['{6AD99D47-2856-47B1-9620-DD115726B0E1}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
@ -31,7 +31,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -60,7 +60,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesAlbaranClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
procedure TDetallesAlbaranClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -68,8 +68,18 @@ begin
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
||||||
AArticulos := (FArticulosController as IArticulosAlbaranClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de cliente', True);
|
|
||||||
Add(ADetalles, AArticulos);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosAlbaranClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de cliente', True);
|
||||||
|
Add(ADetalles, AArticulos, ACantidad)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosAlbaranClienteController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a este albarán de cliente', False);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -278,9 +278,6 @@ begin
|
|||||||
if (FAlbaran.Detalles.RecordCount > 0) then
|
if (FAlbaran.Detalles.RecordCount > 0) then
|
||||||
begin
|
begin
|
||||||
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Cliente);
|
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Cliente);
|
||||||
//En caso de ser una orden de devolucion también debe cambiar el signo a los detalles
|
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
|
||||||
Controller.DetallesController.CambiarSignoDetalles(FAlbaran.Detalles);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
finally
|
finally
|
||||||
|
|||||||
@ -30,6 +30,7 @@ type
|
|||||||
procedure SetAlbaran(const Value: IBizAlbaranCliente);
|
procedure SetAlbaran(const Value: IBizAlbaranCliente);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -45,18 +46,18 @@ uses uDetallesAlbaranClienteController, uViewDetallesBase;
|
|||||||
|
|
||||||
function TfrViewDetallesAlbaranCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
function TfrViewDetallesAlbaranCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID, -1)
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
else
|
||||||
(Controller as IDetallesAlbaranClienteController).CambiarSignoDetalles(Detalles);
|
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesAlbaranCliente.AnadirArticulosInterno;
|
procedure TfrViewDetallesAlbaranCliente.AnadirArticulosInterno;
|
||||||
begin
|
begin
|
||||||
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente);
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, true, -1)
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
else
|
||||||
(Controller as IDetallesAlbaranClienteController).CambiarSignoDetalles(Detalles);
|
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrViewDetallesAlbaranCliente.GetAlbaran: IBizAlbaranCliente;
|
function TfrViewDetallesAlbaranCliente.GetAlbaran: IBizAlbaranCliente;
|
||||||
@ -64,6 +65,14 @@ begin
|
|||||||
Result := FAlbaran;
|
Result := FAlbaran;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesAlbaranCliente.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, False, -1)
|
||||||
|
else
|
||||||
|
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesAlbaranCliente.SetAlbaran(const Value: IBizAlbaranCliente);
|
procedure TfrViewDetallesAlbaranCliente.SetAlbaran(const Value: IBizAlbaranCliente);
|
||||||
begin
|
begin
|
||||||
FAlbaran := Value;
|
FAlbaran := Value;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesAlbaranProveedorController = interface(IControllerDetallesArticulos)
|
IDetallesAlbaranProveedorController = interface(IControllerDetallesArticulos)
|
||||||
['{6E35D49A-C78D-481D-93E9-859CD27EB79F}']
|
['{6E35D49A-C78D-481D-93E9-859CD27EB79F}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
@ -31,7 +31,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -61,7 +61,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesAlbaranProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
procedure TDetallesAlbaranProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -69,8 +69,18 @@ begin
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||||
AArticulos := (FArticulosController as IArticulosAlbaranProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de proveedor', True, AProveedor);
|
|
||||||
Add(ADetalles, AArticulos);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosAlbaranProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de proveedor', True, AProveedor);
|
||||||
|
Add(ADetalles, AArticulos, ACantidad)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosAlbaranProveedorController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a este albarán de proveedor', False, AProveedor);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -239,9 +239,6 @@ begin
|
|||||||
if (FAlbaran.Detalles.RecordCount > 0) then
|
if (FAlbaran.Detalles.RecordCount > 0) then
|
||||||
begin
|
begin
|
||||||
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Proveedor);
|
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Proveedor);
|
||||||
//En caso de ser una orden de devolucion también debe cambiar el signo a los detalles
|
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
|
||||||
Controller.DetallesController.CambiarSignoDetalles(FAlbaran.Detalles);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -28,6 +28,7 @@ type
|
|||||||
procedure SetAlbaran(const Value: IBizAlbaranProveedor);
|
procedure SetAlbaran(const Value: IBizAlbaranProveedor);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -43,18 +44,18 @@ uses uDetallesAlbaranProveedorController, uViewDetallesBase;
|
|||||||
|
|
||||||
function TfrViewDetallesAlbaranProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
function TfrViewDetallesAlbaranProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, -1, -1)
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
else
|
||||||
(Controller as IDetallesAlbaranProveedorController).CambiarSignoDetalles(Detalles);
|
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesAlbaranProveedor.AnadirArticulosInterno;
|
procedure TfrViewDetallesAlbaranProveedor.AnadirArticulosInterno;
|
||||||
begin
|
begin
|
||||||
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor);
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor, true, -1)
|
||||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
else
|
||||||
(Controller as IDetallesAlbaranProveedorController).CambiarSignoDetalles(Detalles);
|
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrViewDetallesAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
|
function TfrViewDetallesAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
|
||||||
@ -62,6 +63,14 @@ begin
|
|||||||
Result := FAlbaran;
|
Result := FAlbaran;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesAlbaranProveedor.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||||
|
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor, False, -1)
|
||||||
|
else
|
||||||
|
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesAlbaranProveedor.SetAlbaran(const Value: IBizAlbaranProveedor);
|
procedure TfrViewDetallesAlbaranProveedor.SetAlbaran(const Value: IBizAlbaranProveedor);
|
||||||
begin
|
begin
|
||||||
FAlbaran := Value;
|
FAlbaran := Value;
|
||||||
|
|||||||
@ -78,7 +78,7 @@ type
|
|||||||
function BuscarTodos(ACliente: Integer): IBizArticulo; overload;
|
function BuscarTodos(ACliente: Integer): IBizArticulo; overload;
|
||||||
function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload;
|
function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload;
|
||||||
function BuscarReferencia(const Ref: String; AClienteID: Integer = -1): IBizArticulo; virtual;
|
function BuscarReferencia(const Ref: String; AClienteID: Integer = -1): IBizArticulo; virtual;
|
||||||
function BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer = -1): IBizArticulo; virtual;
|
function BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer): IBizArticulo; virtual;
|
||||||
function Nuevo : IBizArticulo; virtual;
|
function Nuevo : IBizArticulo; virtual;
|
||||||
procedure Ver(AArticulo : IBizArticulo); virtual;
|
procedure Ver(AArticulo : IBizArticulo); virtual;
|
||||||
procedure VerTodos(AArticulos: IBizArticulo); virtual;
|
procedure VerTodos(AArticulos: IBizArticulo); virtual;
|
||||||
@ -178,24 +178,29 @@ begin
|
|||||||
else
|
else
|
||||||
Result := BuscarTodos(AClienteID);
|
Result := BuscarTodos(AClienteID);
|
||||||
|
|
||||||
// Filtrar por referencia
|
// Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER
|
||||||
with Result.DataTable.DynamicWhere do
|
with Result.DataTable.Where do
|
||||||
begin
|
begin
|
||||||
// (REFERENCIA >= Ref)
|
AddText(Format('UPPER(%s) = ''%s''', [fld_ArticulosREFERENCIA, UpperCase(Ref)]));
|
||||||
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA), NewConstant(UpperCase(Ref), datString), dboEqual);
|
end;
|
||||||
|
|
||||||
if IsEmpty then
|
{with Result.DataTable.DynamicWhere do
|
||||||
Expression := Condicion
|
begin
|
||||||
else
|
// (REFERENCIA >= Ref)
|
||||||
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA), NewConstant(UpperCase(Ref), datString), dboEqual);
|
||||||
end;
|
|
||||||
|
if IsEmpty then
|
||||||
|
Expression := Condicion
|
||||||
|
else
|
||||||
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
||||||
|
end;}
|
||||||
|
|
||||||
finally
|
finally
|
||||||
HideHourglassCursor;
|
HideHourglassCursor;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TArticulosController.BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer = -1): IBizArticulo;
|
function TArticulosController.BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer): IBizArticulo;
|
||||||
var
|
var
|
||||||
Condicion: TDAWhereExpression;
|
Condicion: TDAWhereExpression;
|
||||||
begin
|
begin
|
||||||
@ -206,18 +211,24 @@ begin
|
|||||||
else
|
else
|
||||||
Result := BuscarTodos(AClienteID);
|
Result := BuscarTodos(AClienteID);
|
||||||
|
|
||||||
// Filtrar por referencia
|
// Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER
|
||||||
with Result.DataTable.DynamicWhere do
|
with Result.DataTable.Where do
|
||||||
begin
|
begin
|
||||||
// (REFERENCIA >= Ref)
|
AddText(Format('UPPER(%s) = ''%s''', [fld_ArticulosREFERENCIA_PROV, UpperCase(Ref)]));
|
||||||
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA_PROV), NewConstant(UpperCase(Ref), datString), dboEqual);
|
end;
|
||||||
|
|
||||||
if IsEmpty then
|
|
||||||
Expression := Condicion
|
|
||||||
else
|
|
||||||
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
{with Result.DataTable.DynamicWhere do
|
||||||
|
begin
|
||||||
|
// (REFERENCIA >= Ref)
|
||||||
|
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA_PROV), NewConstant(UpperCase(Ref), datString), dboEqual);
|
||||||
|
|
||||||
|
if IsEmpty then
|
||||||
|
Expression := Condicion
|
||||||
|
else
|
||||||
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
||||||
|
end;}
|
||||||
|
|
||||||
finally
|
finally
|
||||||
HideHourglassCursor;
|
HideHourglassCursor;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -15,10 +15,9 @@ type
|
|||||||
IControllerDetallesArticulos = interface(IControllerDetallesBase)
|
IControllerDetallesArticulos = interface(IControllerDetallesBase)
|
||||||
['{6E156796-DB1F-4727-BBFB-FBAEF2E5C098}']
|
['{6E156796-DB1F-4727-BBFB-FBAEF2E5C098}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True);
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True);
|
||||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean; overload;
|
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1; const ACantidad: Integer = 1): Boolean; overload;
|
||||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
|
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True);
|
||||||
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -31,17 +30,17 @@ type
|
|||||||
procedure RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
procedure RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||||
procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||||
procedure RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
procedure RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||||
procedure RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
procedure RellenarCantidad(ADetalles: IDAStronglyTypedDataTable; const ACantidad: Integer); virtual;
|
||||||
procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); overload;
|
procedure RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer = 1); virtual;
|
||||||
|
procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer = 1); overload;
|
||||||
|
|
||||||
procedure AsignarController; virtual;
|
procedure AsignarController; virtual;
|
||||||
|
|
||||||
public
|
public
|
||||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean; overload;
|
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1; const ACantidad: Integer = 1): Boolean; overload;
|
||||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
|
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True);
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True);
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True);
|
||||||
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
||||||
|
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
@ -59,6 +58,8 @@ uses DB, Dialogs, cxControls, SysUtils, uDAInterfaces, uCalculosUtils, schArticu
|
|||||||
{ TControllerDetallesArticulos }
|
{ TControllerDetallesArticulos }
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure TControllerDetallesArticulos.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||||
|
var
|
||||||
|
ACantidad: Integer;
|
||||||
begin
|
begin
|
||||||
if (Assigned(ADetalles) and Assigned(AArticulos)) then
|
if (Assigned(ADetalles) and Assigned(AArticulos)) then
|
||||||
begin
|
begin
|
||||||
@ -76,9 +77,11 @@ begin
|
|||||||
AArticulos.DataTable.First;
|
AArticulos.DataTable.First;
|
||||||
try
|
try
|
||||||
if AArticulos.DataTable.Locate(CAMPO_ID, FieldByName(CAMPO_ID_ARTICULOS).AsVariant, []) then
|
if AArticulos.DataTable.Locate(CAMPO_ID, FieldByName(CAMPO_ID_ARTICULOS).AsVariant, []) then
|
||||||
RellenarDetalle(ADetalles, AArticulos)
|
begin
|
||||||
else
|
//Para mantener la cantidad que ya tuviera el detalle se debe guardar y volver a poner
|
||||||
RellenarDetalle(ADetalles, Nil);
|
ACantidad := ADetalles.DataTable.FieldByName(CAMPO_CANTIDAD).AsInteger;
|
||||||
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
|
end;
|
||||||
except
|
except
|
||||||
on E: Exception do
|
on E: Exception do
|
||||||
ShowMessage(E.Message);
|
ShowMessage(E.Message);
|
||||||
@ -94,7 +97,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure TControllerDetallesArticulos.Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer);
|
||||||
begin
|
begin
|
||||||
if Assigned(ADetalles) and Assigned(AArticulos) then
|
if Assigned(ADetalles) and Assigned(AArticulos) then
|
||||||
begin
|
begin
|
||||||
@ -114,7 +117,7 @@ begin
|
|||||||
while not EOF do
|
while not EOF do
|
||||||
begin
|
begin
|
||||||
Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO);
|
Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO);
|
||||||
RellenarDetalle(ADetalles, AArticulos);
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
Next;
|
Next;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -125,38 +128,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean;
|
procedure TControllerDetallesArticulos.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila: Boolean);
|
||||||
var
|
|
||||||
AArticulo: IBizArticulo;
|
|
||||||
begin
|
|
||||||
{
|
|
||||||
Añade el artículo con la referencia pasada por parametro a los detalles pasados por parametro
|
|
||||||
En el caso de asignar un AClienteID el articulo debe contener el descuento para ese cliente
|
|
||||||
}
|
|
||||||
|
|
||||||
Result := False;
|
|
||||||
BeginUpdate(ADetalles);
|
|
||||||
ShowHourglassCursor;
|
|
||||||
try
|
|
||||||
AArticulo := FArticulosController.Buscar(IDArticulo, AClienteID);
|
|
||||||
|
|
||||||
if Assigned(AArticulo) then
|
|
||||||
begin
|
|
||||||
AArticulo.DataTable.Active := True;
|
|
||||||
if (AArticulo.RecordCount > 0) then
|
|
||||||
begin
|
|
||||||
RellenarDetalle(ADetalles, AArticulo);
|
|
||||||
Result := True;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
EndUpdate(ADetalles);
|
|
||||||
HideHourglassCursor;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.AnadirArticulos(
|
|
||||||
ADetalles: IDAStronglyTypedDataTable; const ANuevaFila: Boolean);
|
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -164,11 +136,18 @@ begin
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||||
AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir', True);
|
|
||||||
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
if ANuevaFila then
|
if ANuevaFila then
|
||||||
Add(ADetalles, AArticulos)
|
begin
|
||||||
else
|
AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir', True);
|
||||||
RellenarDetalle(ADetalles, AArticulos);
|
Add(ADetalles, AArticulos)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir', False);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos);
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
@ -208,7 +187,7 @@ begin
|
|||||||
//
|
//
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
procedure TControllerDetallesArticulos.CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean);
|
||||||
begin
|
begin
|
||||||
//Cambia de signo los detalles de la pasados por parámetro
|
//Cambia de signo los detalles de la pasados por parámetro
|
||||||
if Assigned(ADetalles) then
|
if Assigned(ADetalles) then
|
||||||
@ -221,15 +200,28 @@ begin
|
|||||||
|
|
||||||
with ADetalles.DataTable do
|
with ADetalles.DataTable do
|
||||||
begin
|
begin
|
||||||
First;
|
//Cambia el signo a todos
|
||||||
while not EOF do
|
if AAll then
|
||||||
|
begin
|
||||||
|
First;
|
||||||
|
while not EOF do
|
||||||
|
begin
|
||||||
|
if (FieldByName(CAMPO_CANTIDAD).AsInteger <> 0) then
|
||||||
|
begin
|
||||||
|
Edit;
|
||||||
|
FieldByName(CAMPO_CANTIDAD).AsInteger := (-1) * FieldByName(CAMPO_CANTIDAD).AsInteger;
|
||||||
|
end;
|
||||||
|
Next;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
//Solo cambia el signo al seleccionado
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
if (FieldByName(CAMPO_CANTIDAD).AsInteger <> 0) then
|
if (FieldByName(CAMPO_CANTIDAD).AsInteger <> 0) then
|
||||||
begin
|
begin
|
||||||
Edit;
|
Edit;
|
||||||
FieldByName(CAMPO_CANTIDAD).AsInteger := (-1) * FieldByName(CAMPO_CANTIDAD).AsInteger;
|
FieldByName(CAMPO_CANTIDAD).AsInteger := (-1) * FieldByName(CAMPO_CANTIDAD).AsInteger;
|
||||||
end;
|
end;
|
||||||
Next;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
@ -266,7 +258,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean;
|
function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1; const ACantidad: Integer = 1): Boolean;
|
||||||
var
|
var
|
||||||
AArticulo: IBizArticulo;
|
AArticulo: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -288,7 +280,7 @@ begin
|
|||||||
AArticulo.DataTable.Active := True;
|
AArticulo.DataTable.Active := True;
|
||||||
if (AArticulo.RecordCount > 0) then
|
if (AArticulo.RecordCount > 0) then
|
||||||
begin
|
begin
|
||||||
RellenarDetalle(ADetalles, AArticulo);
|
RellenarDetalle(ADetalles, AArticulo, ACantidad);
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -298,23 +290,37 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TControllerDetallesArticulos.RellenarCantidad(ADetalles: IDAStronglyTypedDataTable; const ACantidad: Integer);
|
||||||
|
begin
|
||||||
|
if Assigned(ADetalles) then
|
||||||
|
begin
|
||||||
|
ADetalles.DataTable.FieldByName(CAMPO_CANTIDAD).AsInteger := ACantidad;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure TControllerDetallesArticulos.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||||
begin
|
begin
|
||||||
// Procedimiento que en los hijos se sobreescribirá para rellenar otros campos según necesidades
|
// Procedimiento que en los hijos se sobreescribirá para rellenar otros campos según necesidades
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControllerDetallesArticulos.RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
procedure TControllerDetallesArticulos.RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer);
|
||||||
begin
|
begin
|
||||||
if Assigned(ADetalles) then
|
if Assigned(ADetalles) then
|
||||||
begin
|
begin
|
||||||
if not ADetalles.DataTable.Editing then
|
BeginUpdate(ADetalles);
|
||||||
ADetalles.DataTable.Edit;
|
try
|
||||||
|
if not ADetalles.DataTable.Editing then
|
||||||
RellenarGenerales(ADetalles, AArticulos);
|
ADetalles.DataTable.Edit;
|
||||||
RellenarImportes(ADetalles, AArticulos);
|
|
||||||
RellenarOtros(ADetalles, AArticulos);
|
RellenarGenerales(ADetalles, AArticulos);
|
||||||
|
RellenarCantidad(ADetalles, ACantidad);
|
||||||
ADetalles.DataTable.Post;
|
RellenarImportes(ADetalles, AArticulos);
|
||||||
|
RellenarOtros(ADetalles, AArticulos);
|
||||||
|
|
||||||
|
ADetalles.DataTable.Post;
|
||||||
|
finally
|
||||||
|
EndUpdate(ADetalles);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -326,7 +332,6 @@ begin
|
|||||||
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA).AsVariant := AArticulos.REFERENCIA;
|
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA).AsVariant := AArticulos.REFERENCIA;
|
||||||
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_PROVEEDOR).AsVariant := AArticulos.REFERENCIA_PROV;
|
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_PROVEEDOR).AsVariant := AArticulos.REFERENCIA_PROV;
|
||||||
ADetalles.DataTable.FieldByName(CAMPO_CONCEPTO).AsVariant := AArticulos.DESCRIPCION;
|
ADetalles.DataTable.FieldByName(CAMPO_CONCEPTO).AsVariant := AArticulos.DESCRIPCION;
|
||||||
ADetalles.DataTable.FieldByName(CAMPO_CANTIDAD).AsInteger := 1;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ object srvArticulos: TsrvArticulos
|
|||||||
ConnectionName = 'IBX'
|
ConnectionName = 'IBX'
|
||||||
ServiceSchema = schArticulos
|
ServiceSchema = schArticulos
|
||||||
ServiceDataStreamer = Bin2DataStreamer
|
ServiceDataStreamer = Bin2DataStreamer
|
||||||
|
AllowWhereSQL = True
|
||||||
ExportedDataTables = <>
|
ExportedDataTables = <>
|
||||||
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
|
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
|
||||||
Height = 229
|
Height = 229
|
||||||
|
|||||||
@ -34,6 +34,7 @@ type
|
|||||||
|
|
||||||
protected
|
protected
|
||||||
procedure AnadirArticulosInterno; virtual;
|
procedure AnadirArticulosInterno; virtual;
|
||||||
|
procedure RellenarArticulosInterno; virtual;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; virtual;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -121,6 +122,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesArticulos.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
(Controller as IControllerDetallesArticulos).AnadirArticulos(Detalles, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesArticulos.actAnadirArticulosUpdate(Sender: TObject);
|
procedure TfrViewDetallesArticulos.actAnadirArticulosUpdate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesFacturaClienteController = interface(IControllerDetallesArticulos)
|
IDetallesFacturaClienteController = interface(IControllerDetallesArticulos)
|
||||||
['{D3942A48-C55B-4A98-AC5B-B5E652ED393E}']
|
['{D3942A48-C55B-4A98-AC5B-B5E652ED393E}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
||||||
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaCliente; AReferencia: String; AFecha: String);
|
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaCliente; AReferencia: String; AFecha: String);
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
@ -32,7 +32,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
||||||
|
|
||||||
//ABONOS
|
//ABONOS
|
||||||
@ -65,7 +65,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesFacturaClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
procedure TDetallesFacturaClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -73,8 +73,18 @@ begin
|
|||||||
begin
|
begin
|
||||||
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController as IArticulosFacturaClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de cliente', True);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
Add(ADetalles, AArticulos);
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosFacturaClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de cliente', True);
|
||||||
|
Add(ADetalles, AArticulos, ACantidad)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosFacturaClienteController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a esta factura de cliente', False);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
|
end;
|
||||||
|
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -312,11 +312,6 @@ begin
|
|||||||
FDetallesController := TDetallesFacturaClienteController.Create;
|
FDetallesController := TDetallesFacturaClienteController.Create;
|
||||||
try
|
try
|
||||||
FDetallesController.ActualizarDetalles(FFactura.Detalles, FFactura.Cliente);
|
FDetallesController.ActualizarDetalles(FFactura.Detalles, FFactura.Cliente);
|
||||||
|
|
||||||
//En caso de ser un abono también debe cambiar el signo a los detalles
|
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
|
||||||
Controller.DetallesController.CambiarSignoDetalles(FFactura.Detalles);
|
|
||||||
|
|
||||||
finally
|
finally
|
||||||
FDetallesController := NIL;
|
FDetallesController := NIL;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -29,6 +29,7 @@ type
|
|||||||
procedure SetFactura(const Value: IBizFacturaCliente);
|
procedure SetFactura(const Value: IBizFacturaCliente);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -44,18 +45,18 @@ uses uDetallesFacturaClienteController;
|
|||||||
|
|
||||||
function TfrViewDetallesFacturaCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
function TfrViewDetallesFacturaCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID);
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID, -1)
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
else
|
||||||
(Controller as IDetallesFacturaClienteController).CambiarSignoDetalles(Detalles);
|
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesFacturaCliente.AnadirArticulosInterno;
|
procedure TfrViewDetallesFacturaCliente.AnadirArticulosInterno;
|
||||||
begin
|
begin
|
||||||
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente);
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, true, -1)
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
else
|
||||||
(Controller as IDetallesFacturaClienteController).CambiarSignoDetalles(Detalles);
|
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrViewDetallesFacturaCliente.GetFactura: IBizFacturaCliente;
|
function TfrViewDetallesFacturaCliente.GetFactura: IBizFacturaCliente;
|
||||||
@ -63,6 +64,14 @@ begin
|
|||||||
Result := FFactura;
|
Result := FFactura;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesFacturaCliente.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False, -1)
|
||||||
|
else
|
||||||
|
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesFacturaCliente.SetFactura(const Value: IBizFacturaCliente);
|
procedure TfrViewDetallesFacturaCliente.SetFactura(const Value: IBizFacturaCliente);
|
||||||
begin
|
begin
|
||||||
FFactura := Value;
|
FFactura := Value;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesFacturaProveedorController = interface(IControllerDetallesArticulos)
|
IDetallesFacturaProveedorController = interface(IControllerDetallesArticulos)
|
||||||
['{49F6199E-E031-42F5-AEA5-E70C3E3479A1}']
|
['{49F6199E-E031-42F5-AEA5-E70C3E3479A1}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
||||||
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
@ -31,7 +31,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
||||||
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
@ -62,7 +62,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesFacturaProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
procedure TDetallesFacturaProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -70,16 +70,24 @@ begin
|
|||||||
begin
|
begin
|
||||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController as IArticulosFacturaProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de Proveedor', True, AProveedor);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
Add(ADetalles, AArticulos);
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosFacturaProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de Proveedor', True, AProveedor);
|
||||||
|
Add(ADetalles, AArticulos, ACantidad)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosFacturaProveedorController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a esta factura de Proveedor', False, AProveedor);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesFacturaProveedorController.AnadirDetalleFacturaAsociadaAbono(
|
procedure TDetallesFacturaProveedorController.AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia, AFecha: String);
|
||||||
ADetalles: IBizDetallesFacturaProveedor; AReferencia, AFecha: String);
|
|
||||||
begin
|
begin
|
||||||
AnadirConceptoInicial(ADetalles, 'ABONO DE FACTURA ' + AReferencia + ' con fecha ' + AFecha);
|
AnadirConceptoInicial(ADetalles, 'ABONO DE FACTURA ' + AReferencia + ' con fecha ' + AFecha);
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -300,11 +300,6 @@ begin
|
|||||||
FDetallesController := TDetallesFacturaProveedorController.Create;
|
FDetallesController := TDetallesFacturaProveedorController.Create;
|
||||||
try
|
try
|
||||||
FDetallesController.ActualizarDetalles(FFactura.Detalles, FFactura.Proveedor);
|
FDetallesController.ActualizarDetalles(FFactura.Detalles, FFactura.Proveedor);
|
||||||
|
|
||||||
//En caso de ser un abono también debe cambiar el signo a los detalles
|
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
|
||||||
Controller.DetallesController.CambiarSignoDetalles(FFactura.Detalles);
|
|
||||||
|
|
||||||
finally
|
finally
|
||||||
FDetallesController := NIL;
|
FDetallesController := NIL;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -29,6 +29,7 @@ type
|
|||||||
procedure SetFactura(const Value: IBizFacturaProveedor);
|
procedure SetFactura(const Value: IBizFacturaProveedor);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -44,18 +45,18 @@ uses uDetallesFacturaProveedorController;
|
|||||||
|
|
||||||
function TfrViewDetallesFacturaProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
function TfrViewDetallesFacturaProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor);
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor, -1, -1)
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
else
|
||||||
(Controller as IDetallesFacturaProveedorController).CambiarSignoDetalles(Detalles);
|
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor, -1, -1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesFacturaProveedor.AnadirArticulosInterno;
|
procedure TfrViewDetallesFacturaProveedor.AnadirArticulosInterno;
|
||||||
begin
|
begin
|
||||||
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor);
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, true, -1)
|
||||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
else
|
||||||
(Controller as IDetallesFacturaProveedorController).CambiarSignoDetalles(Detalles);
|
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrViewDetallesFacturaProveedor.GetFactura: IBizFacturaProveedor;
|
function TfrViewDetallesFacturaProveedor.GetFactura: IBizFacturaProveedor;
|
||||||
@ -63,6 +64,14 @@ begin
|
|||||||
Result := FFactura;
|
Result := FFactura;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesFacturaProveedor.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||||
|
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, False, -1)
|
||||||
|
else
|
||||||
|
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesFacturaProveedor.SetFactura(const Value: IBizFacturaProveedor);
|
procedure TfrViewDetallesFacturaProveedor.SetFactura(const Value: IBizFacturaProveedor);
|
||||||
begin
|
begin
|
||||||
FFactura := Value;
|
FFactura := Value;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesPedidoProveedorController = interface(IControllerDetallesArticulos)
|
IDetallesPedidoProveedorController = interface(IControllerDetallesArticulos)
|
||||||
['{942428EC-BCB8-4C56-BFA6-EB9F05D5E0DB}']
|
['{942428EC-BCB8-4C56-BFA6-EB9F05D5E0DB}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
||||||
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
@ -32,7 +32,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean = True); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload;
|
||||||
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
@ -62,16 +62,27 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesPedidoProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
procedure TDetallesPedidoProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
if Assigned(ADetalles) then
|
if Assigned(ADetalles) then
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||||
AArticulos := (FArticulosController as IArticulosPedidoProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este pedido a proveedor', True, AProveedor);
|
|
||||||
Add(ADetalles, AArticulos);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosPedidoProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este pedido a proveedor', True, AProveedor);
|
||||||
|
Add(ADetalles, AArticulos)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosPedidoProveedorController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a este pedido a proveedor', False, AProveedor);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos);
|
||||||
|
end;
|
||||||
|
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -29,6 +29,7 @@ type
|
|||||||
procedure SetPedido(const Value: IBizPedidoProveedor);
|
procedure SetPedido(const Value: IBizPedidoProveedor);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -65,6 +66,14 @@ begin
|
|||||||
Result := FPedido;
|
Result := FPedido;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesPedidoProveedor.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
//No sé porque está en este módulo hecho así, supongo que por seguridad.
|
||||||
|
if Assigned(Pedido) and Assigned(Pedido.Proveedor)
|
||||||
|
then (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, Pedido.Proveedor, False)
|
||||||
|
else (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
|
procedure TfrViewDetallesPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
|
||||||
begin
|
begin
|
||||||
FPedido := Value;
|
FPedido := Value;
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
type
|
type
|
||||||
IDetallesPresupuestoClienteController = interface(IControllerDetallesArticulos)
|
IDetallesPresupuestoClienteController = interface(IControllerDetallesArticulos)
|
||||||
['{8D1D3559-E695-4962-9999-404B26B50D6C}']
|
['{8D1D3559-E695-4962-9999-404B26B50D6C}']
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True); overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
||||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
@ -31,7 +31,7 @@ type
|
|||||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); reintroduce; overload;
|
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True); reintroduce; overload;
|
||||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -60,7 +60,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDetallesPresupuestoClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
procedure TDetallesPresupuestoClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean);
|
||||||
var
|
var
|
||||||
AArticulos: IBizArticulo;
|
AArticulos: IBizArticulo;
|
||||||
begin
|
begin
|
||||||
@ -68,8 +68,19 @@ begin
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
||||||
AArticulos := (FArticulosController as IArticulosPresupuestoClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este pedido de cliente', True);
|
|
||||||
Add(ADetalles, AArticulos);
|
//Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
|
||||||
|
if ANuevaFila then
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosPresupuestoClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este presupuesto de cliente', True);
|
||||||
|
Add(ADetalles, AArticulos)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AArticulos := (FArticulosController as IArticulosPresupuestoClienteController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a este presupuesto de cliente', False);
|
||||||
|
RellenarDetalle(ADetalles, AArticulos);
|
||||||
|
end;
|
||||||
|
|
||||||
finally
|
finally
|
||||||
AArticulos := Nil;
|
AArticulos := Nil;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -30,6 +30,7 @@ type
|
|||||||
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
|
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
|
||||||
|
|
||||||
procedure AnadirArticulosInterno; override;
|
procedure AnadirArticulosInterno; override;
|
||||||
|
procedure RellenarArticulosInterno; override;
|
||||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||||
|
|
||||||
public
|
public
|
||||||
@ -64,6 +65,11 @@ begin
|
|||||||
Result := FPresupuesto;
|
Result := FPresupuesto;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrViewDetallesPresupuestoCliente.RellenarArticulosInterno;
|
||||||
|
begin
|
||||||
|
(Controller as IDetallesPresupuestoClienteController).AnadirArticulos(Detalles, Presupuesto.Cliente, False);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrViewDetallesPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
|
procedure TfrViewDetallesPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
|
||||||
begin
|
begin
|
||||||
FPresupuesto := Value;
|
FPresupuesto := Value;
|
||||||
|
|||||||
Binary file not shown.
@ -14,7 +14,7 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileVersion", "1.0.0.0\0"
|
VALUE "FileVersion", "1.0.0.0\0"
|
||||||
VALUE "ProductVersion", "1.0.0.0\0"
|
VALUE "ProductVersion", "1.0.0.0\0"
|
||||||
VALUE "CompileDate", "viernes, 01 de febrero de 2008 18:40\0"
|
VALUE "CompileDate", "jueves, 07 de febrero de 2008 18:44\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user