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
|
||||
IDetallesAlbaranClienteController = interface(IControllerDetallesArticulos)
|
||||
['{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 DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
@ -31,7 +31,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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;
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
@ -60,7 +60,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesAlbaranClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
||||
procedure TDetallesAlbaranClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -68,8 +68,18 @@ begin
|
||||
begin
|
||||
try
|
||||
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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
|
||||
@ -278,9 +278,6 @@ begin
|
||||
if (FAlbaran.Detalles.RecordCount > 0) then
|
||||
begin
|
||||
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;
|
||||
|
||||
finally
|
||||
|
||||
@ -30,6 +30,7 @@ type
|
||||
procedure SetAlbaran(const Value: IBizAlbaranCliente);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -45,18 +46,18 @@ uses uDetallesAlbaranClienteController, uViewDetallesBase;
|
||||
|
||||
function TfrViewDetallesAlbaranCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||
begin
|
||||
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
||||
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranClienteController).CambiarSignoDetalles(Detalles);
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID, -1)
|
||||
else
|
||||
Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesAlbaranCliente.AnadirArticulosInterno;
|
||||
begin
|
||||
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente);
|
||||
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranClienteController).CambiarSignoDetalles(Detalles);
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, true, -1)
|
||||
else
|
||||
(Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente);
|
||||
end;
|
||||
|
||||
function TfrViewDetallesAlbaranCliente.GetAlbaran: IBizAlbaranCliente;
|
||||
@ -64,6 +65,14 @@ begin
|
||||
Result := FAlbaran;
|
||||
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);
|
||||
begin
|
||||
FAlbaran := Value;
|
||||
|
||||
@ -9,7 +9,7 @@ uses
|
||||
type
|
||||
IDetallesAlbaranProveedorController = interface(IControllerDetallesArticulos)
|
||||
['{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 DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
@ -31,7 +31,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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;
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
@ -61,7 +61,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesAlbaranProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
||||
procedure TDetallesAlbaranProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -69,8 +69,18 @@ begin
|
||||
begin
|
||||
try
|
||||
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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
|
||||
@ -239,9 +239,6 @@ begin
|
||||
if (FAlbaran.Detalles.RecordCount > 0) then
|
||||
begin
|
||||
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;
|
||||
|
||||
@ -28,6 +28,7 @@ type
|
||||
procedure SetAlbaran(const Value: IBizAlbaranProveedor);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -43,18 +44,18 @@ uses uDetallesAlbaranProveedorController, uViewDetallesBase;
|
||||
|
||||
function TfrViewDetallesAlbaranProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||
begin
|
||||
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
||||
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranProveedorController).CambiarSignoDetalles(Detalles);
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, -1, -1)
|
||||
else
|
||||
Result := (Controller as IDetallesAlbaranProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesAlbaranProveedor.AnadirArticulosInterno;
|
||||
begin
|
||||
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor);
|
||||
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranProveedorController).CambiarSignoDetalles(Detalles);
|
||||
if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
||||
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor, true, -1)
|
||||
else
|
||||
(Controller as IDetallesAlbaranProveedorController).AnadirArticulos(Detalles, Albaran.Proveedor);
|
||||
end;
|
||||
|
||||
function TfrViewDetallesAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
|
||||
@ -62,6 +63,14 @@ begin
|
||||
Result := FAlbaran;
|
||||
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);
|
||||
begin
|
||||
FAlbaran := Value;
|
||||
|
||||
@ -78,7 +78,7 @@ type
|
||||
function BuscarTodos(ACliente: Integer): IBizArticulo; overload;
|
||||
function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload;
|
||||
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;
|
||||
procedure Ver(AArticulo : IBizArticulo); virtual;
|
||||
procedure VerTodos(AArticulos: IBizArticulo); virtual;
|
||||
@ -178,24 +178,29 @@ begin
|
||||
else
|
||||
Result := BuscarTodos(AClienteID);
|
||||
|
||||
// Filtrar por referencia
|
||||
with Result.DataTable.DynamicWhere do
|
||||
begin
|
||||
// (REFERENCIA >= Ref)
|
||||
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA), NewConstant(UpperCase(Ref), datString), dboEqual);
|
||||
|
||||
if IsEmpty then
|
||||
Expression := Condicion
|
||||
else
|
||||
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
||||
end;
|
||||
|
||||
// Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER
|
||||
with Result.DataTable.Where do
|
||||
begin
|
||||
AddText(Format('UPPER(%s) = ''%s''', [fld_ArticulosREFERENCIA, UpperCase(Ref)]));
|
||||
end;
|
||||
|
||||
{with Result.DataTable.DynamicWhere do
|
||||
begin
|
||||
// (REFERENCIA >= Ref)
|
||||
Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA), NewConstant(UpperCase(Ref), datString), dboEqual);
|
||||
|
||||
if IsEmpty then
|
||||
Expression := Condicion
|
||||
else
|
||||
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
||||
end;}
|
||||
|
||||
finally
|
||||
HideHourglassCursor;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TArticulosController.BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer = -1): IBizArticulo;
|
||||
function TArticulosController.BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer): IBizArticulo;
|
||||
var
|
||||
Condicion: TDAWhereExpression;
|
||||
begin
|
||||
@ -206,18 +211,24 @@ begin
|
||||
else
|
||||
Result := BuscarTodos(AClienteID);
|
||||
|
||||
// Filtrar por referencia
|
||||
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;
|
||||
// Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER
|
||||
with Result.DataTable.Where do
|
||||
begin
|
||||
AddText(Format('UPPER(%s) = ''%s''', [fld_ArticulosREFERENCIA_PROV, UpperCase(Ref)]));
|
||||
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
|
||||
HideHourglassCursor;
|
||||
end;
|
||||
|
||||
@ -15,10 +15,9 @@ type
|
||||
IControllerDetallesArticulos = interface(IControllerDetallesBase)
|
||||
['{6E156796-DB1F-4727-BBFB-FBAEF2E5C098}']
|
||||
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; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
|
||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1; const ACantidad: Integer = 1): Boolean; overload;
|
||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True);
|
||||
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
||||
end;
|
||||
|
||||
@ -31,17 +30,17 @@ type
|
||||
procedure RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||
procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||
procedure RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||
procedure RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
|
||||
procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); overload;
|
||||
procedure RellenarCantidad(ADetalles: IDAStronglyTypedDataTable; const ACantidad: Integer); virtual;
|
||||
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;
|
||||
|
||||
public
|
||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean; overload;
|
||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
|
||||
function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1; const ACantidad: Integer = 1): Boolean; overload;
|
||||
procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True);
|
||||
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
||||
procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True);
|
||||
procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
|
||||
|
||||
constructor Create; override;
|
||||
@ -59,6 +58,8 @@ uses DB, Dialogs, cxControls, SysUtils, uDAInterfaces, uCalculosUtils, schArticu
|
||||
{ TControllerDetallesArticulos }
|
||||
|
||||
procedure TControllerDetallesArticulos.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||
var
|
||||
ACantidad: Integer;
|
||||
begin
|
||||
if (Assigned(ADetalles) and Assigned(AArticulos)) then
|
||||
begin
|
||||
@ -76,9 +77,11 @@ begin
|
||||
AArticulos.DataTable.First;
|
||||
try
|
||||
if AArticulos.DataTable.Locate(CAMPO_ID, FieldByName(CAMPO_ID_ARTICULOS).AsVariant, []) then
|
||||
RellenarDetalle(ADetalles, AArticulos)
|
||||
else
|
||||
RellenarDetalle(ADetalles, Nil);
|
||||
begin
|
||||
//Para mantener la cantidad que ya tuviera el detalle se debe guardar y volver a poner
|
||||
ACantidad := ADetalles.DataTable.FieldByName(CAMPO_CANTIDAD).AsInteger;
|
||||
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||
end;
|
||||
except
|
||||
on E: Exception do
|
||||
ShowMessage(E.Message);
|
||||
@ -94,7 +97,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TControllerDetallesArticulos.Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||
procedure TControllerDetallesArticulos.Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer);
|
||||
begin
|
||||
if Assigned(ADetalles) and Assigned(AArticulos) then
|
||||
begin
|
||||
@ -114,7 +117,7 @@ begin
|
||||
while not EOF do
|
||||
begin
|
||||
Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO);
|
||||
RellenarDetalle(ADetalles, AArticulos);
|
||||
RellenarDetalle(ADetalles, AArticulos, ACantidad);
|
||||
Next;
|
||||
end;
|
||||
end;
|
||||
@ -125,38 +128,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): 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);
|
||||
procedure TControllerDetallesArticulos.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila: Boolean);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -164,11 +136,18 @@ begin
|
||||
begin
|
||||
try
|
||||
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
|
||||
Add(ADetalles, AArticulos)
|
||||
else
|
||||
RellenarDetalle(ADetalles, AArticulos);
|
||||
begin
|
||||
AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir', True);
|
||||
Add(ADetalles, AArticulos)
|
||||
end
|
||||
else
|
||||
begin
|
||||
AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir', False);
|
||||
RellenarDetalle(ADetalles, AArticulos);
|
||||
end;
|
||||
finally
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
@ -208,7 +187,7 @@ begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TControllerDetallesArticulos.CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
|
||||
procedure TControllerDetallesArticulos.CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean);
|
||||
begin
|
||||
//Cambia de signo los detalles de la pasados por parámetro
|
||||
if Assigned(ADetalles) then
|
||||
@ -221,15 +200,28 @@ begin
|
||||
|
||||
with ADetalles.DataTable do
|
||||
begin
|
||||
First;
|
||||
while not EOF do
|
||||
//Cambia el signo a todos
|
||||
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
|
||||
if (FieldByName(CAMPO_CANTIDAD).AsInteger <> 0) then
|
||||
begin
|
||||
Edit;
|
||||
FieldByName(CAMPO_CANTIDAD).AsInteger := (-1) * FieldByName(CAMPO_CANTIDAD).AsInteger;
|
||||
end;
|
||||
Next;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
@ -266,7 +258,7 @@ begin
|
||||
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
|
||||
AArticulo: IBizArticulo;
|
||||
begin
|
||||
@ -288,7 +280,7 @@ begin
|
||||
AArticulo.DataTable.Active := True;
|
||||
if (AArticulo.RecordCount > 0) then
|
||||
begin
|
||||
RellenarDetalle(ADetalles, AArticulo);
|
||||
RellenarDetalle(ADetalles, AArticulo, ACantidad);
|
||||
Result := True;
|
||||
end;
|
||||
end;
|
||||
@ -298,23 +290,37 @@ begin
|
||||
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);
|
||||
begin
|
||||
// Procedimiento que en los hijos se sobreescribirá para rellenar otros campos según necesidades
|
||||
end;
|
||||
|
||||
procedure TControllerDetallesArticulos.RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
|
||||
procedure TControllerDetallesArticulos.RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Integer);
|
||||
begin
|
||||
if Assigned(ADetalles) then
|
||||
begin
|
||||
if not ADetalles.DataTable.Editing then
|
||||
ADetalles.DataTable.Edit;
|
||||
|
||||
RellenarGenerales(ADetalles, AArticulos);
|
||||
RellenarImportes(ADetalles, AArticulos);
|
||||
RellenarOtros(ADetalles, AArticulos);
|
||||
|
||||
ADetalles.DataTable.Post;
|
||||
BeginUpdate(ADetalles);
|
||||
try
|
||||
if not ADetalles.DataTable.Editing then
|
||||
ADetalles.DataTable.Edit;
|
||||
|
||||
RellenarGenerales(ADetalles, AArticulos);
|
||||
RellenarCantidad(ADetalles, ACantidad);
|
||||
RellenarImportes(ADetalles, AArticulos);
|
||||
RellenarOtros(ADetalles, AArticulos);
|
||||
|
||||
ADetalles.DataTable.Post;
|
||||
finally
|
||||
EndUpdate(ADetalles);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -326,7 +332,6 @@ begin
|
||||
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA).AsVariant := AArticulos.REFERENCIA;
|
||||
ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_PROVEEDOR).AsVariant := AArticulos.REFERENCIA_PROV;
|
||||
ADetalles.DataTable.FieldByName(CAMPO_CONCEPTO).AsVariant := AArticulos.DESCRIPCION;
|
||||
ADetalles.DataTable.FieldByName(CAMPO_CANTIDAD).AsInteger := 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ object srvArticulos: TsrvArticulos
|
||||
ConnectionName = 'IBX'
|
||||
ServiceSchema = schArticulos
|
||||
ServiceDataStreamer = Bin2DataStreamer
|
||||
AllowWhereSQL = True
|
||||
ExportedDataTables = <>
|
||||
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
|
||||
Height = 229
|
||||
|
||||
@ -34,6 +34,7 @@ type
|
||||
|
||||
protected
|
||||
procedure AnadirArticulosInterno; virtual;
|
||||
procedure RellenarArticulosInterno; virtual;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; virtual;
|
||||
end;
|
||||
|
||||
@ -121,6 +122,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesArticulos.RellenarArticulosInterno;
|
||||
begin
|
||||
(Controller as IControllerDetallesArticulos).AnadirArticulos(Detalles, False);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesArticulos.actAnadirArticulosUpdate(Sender: TObject);
|
||||
begin
|
||||
inherited;
|
||||
|
||||
@ -9,7 +9,7 @@ uses
|
||||
type
|
||||
IDetallesFacturaClienteController = interface(IControllerDetallesArticulos)
|
||||
['{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 AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaCliente; AReferencia: String; AFecha: String);
|
||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
@ -32,7 +32,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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;
|
||||
|
||||
//ABONOS
|
||||
@ -65,7 +65,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesFacturaClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
||||
procedure TDetallesFacturaClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -73,8 +73,18 @@ begin
|
||||
begin
|
||||
AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
|
||||
try
|
||||
AArticulos := (FArticulosController as IArticulosFacturaClienteController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura 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 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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
|
||||
@ -312,11 +312,6 @@ begin
|
||||
FDetallesController := TDetallesFacturaClienteController.Create;
|
||||
try
|
||||
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
|
||||
FDetallesController := NIL;
|
||||
end;
|
||||
|
||||
@ -29,6 +29,7 @@ type
|
||||
procedure SetFactura(const Value: IBizFacturaCliente);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -44,18 +45,18 @@ uses uDetallesFacturaClienteController;
|
||||
|
||||
function TfrViewDetallesFacturaCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||
begin
|
||||
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID);
|
||||
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaClienteController).CambiarSignoDetalles(Detalles);
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID, -1)
|
||||
else
|
||||
Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesFacturaCliente.AnadirArticulosInterno;
|
||||
begin
|
||||
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente);
|
||||
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaClienteController).CambiarSignoDetalles(Detalles);
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, true, -1)
|
||||
else
|
||||
(Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente);
|
||||
end;
|
||||
|
||||
function TfrViewDetallesFacturaCliente.GetFactura: IBizFacturaCliente;
|
||||
@ -63,6 +64,14 @@ begin
|
||||
Result := FFactura;
|
||||
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);
|
||||
begin
|
||||
FFactura := Value;
|
||||
|
||||
@ -9,7 +9,7 @@ uses
|
||||
type
|
||||
IDetallesFacturaProveedorController = interface(IControllerDetallesArticulos)
|
||||
['{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 AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
@ -31,7 +31,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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 AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String);
|
||||
constructor Create; override;
|
||||
@ -62,7 +62,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesFacturaProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
||||
procedure TDetallesFacturaProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean; const ACantidad: Integer);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -70,16 +70,24 @@ begin
|
||||
begin
|
||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||
try
|
||||
AArticulos := (FArticulosController as IArticulosFacturaProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura 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 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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesFacturaProveedorController.AnadirDetalleFacturaAsociadaAbono(
|
||||
ADetalles: IBizDetallesFacturaProveedor; AReferencia, AFecha: String);
|
||||
procedure TDetallesFacturaProveedorController.AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia, AFecha: String);
|
||||
begin
|
||||
AnadirConceptoInicial(ADetalles, 'ABONO DE FACTURA ' + AReferencia + ' con fecha ' + AFecha);
|
||||
end;
|
||||
|
||||
@ -300,11 +300,6 @@ begin
|
||||
FDetallesController := TDetallesFacturaProveedorController.Create;
|
||||
try
|
||||
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
|
||||
FDetallesController := NIL;
|
||||
end;
|
||||
|
||||
@ -29,6 +29,7 @@ type
|
||||
procedure SetFactura(const Value: IBizFacturaProveedor);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -44,18 +45,18 @@ uses uDetallesFacturaProveedorController;
|
||||
|
||||
function TfrViewDetallesFacturaProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
|
||||
begin
|
||||
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor);
|
||||
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaProveedorController).CambiarSignoDetalles(Detalles);
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor, -1, -1)
|
||||
else
|
||||
Result := (Controller as IDetallesFacturaProveedorController).AnadirArticulo(Detalles, pReferencia, tProveedor, -1, -1);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesFacturaProveedor.AnadirArticulosInterno;
|
||||
begin
|
||||
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor);
|
||||
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaProveedorController).CambiarSignoDetalles(Detalles);
|
||||
if (Factura.TIPO = CTE_TIPO_ABONO) then
|
||||
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor, true, -1)
|
||||
else
|
||||
(Controller as IDetallesFacturaProveedorController).AnadirArticulos(Detalles, Factura.Proveedor);
|
||||
end;
|
||||
|
||||
function TfrViewDetallesFacturaProveedor.GetFactura: IBizFacturaProveedor;
|
||||
@ -63,6 +64,14 @@ begin
|
||||
Result := FFactura;
|
||||
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);
|
||||
begin
|
||||
FFactura := Value;
|
||||
|
||||
@ -9,7 +9,7 @@ uses
|
||||
type
|
||||
IDetallesPedidoProveedorController = interface(IControllerDetallesArticulos)
|
||||
['{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;
|
||||
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
||||
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
@ -32,7 +32,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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;
|
||||
function ArticulosPendientes(const ID : Integer): IBizDetallesPedidoProveedorPend;
|
||||
constructor Create; override;
|
||||
@ -62,16 +62,27 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesPedidoProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
|
||||
procedure TDetallesPedidoProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor; const ANuevaFila :Boolean);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
if Assigned(ADetalles) then
|
||||
begin
|
||||
try
|
||||
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);
|
||||
AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
|
||||
|
||||
//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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
|
||||
@ -29,6 +29,7 @@ type
|
||||
procedure SetPedido(const Value: IBizPedidoProveedor);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -65,6 +66,14 @@ begin
|
||||
Result := FPedido;
|
||||
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);
|
||||
begin
|
||||
FPedido := Value;
|
||||
|
||||
@ -9,7 +9,7 @@ uses
|
||||
type
|
||||
IDetallesPresupuestoClienteController = interface(IControllerDetallesArticulos)
|
||||
['{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 DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
@ -31,7 +31,7 @@ type
|
||||
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
|
||||
|
||||
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;
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
@ -60,7 +60,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDetallesPresupuestoClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
|
||||
procedure TDetallesPresupuestoClienteController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean);
|
||||
var
|
||||
AArticulos: IBizArticulo;
|
||||
begin
|
||||
@ -68,8 +68,19 @@ begin
|
||||
begin
|
||||
try
|
||||
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
|
||||
AArticulos := Nil;
|
||||
end;
|
||||
|
||||
@ -30,6 +30,7 @@ type
|
||||
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
|
||||
|
||||
procedure AnadirArticulosInterno; override;
|
||||
procedure RellenarArticulosInterno; override;
|
||||
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
|
||||
|
||||
public
|
||||
@ -64,6 +65,11 @@ begin
|
||||
Result := FPresupuesto;
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesPresupuestoCliente.RellenarArticulosInterno;
|
||||
begin
|
||||
(Controller as IDetallesPresupuestoClienteController).AnadirArticulos(Detalles, Presupuesto.Cliente, False);
|
||||
end;
|
||||
|
||||
procedure TfrViewDetallesPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
|
||||
begin
|
||||
FPresupuesto := Value;
|
||||
|
||||
Binary file not shown.
@ -14,7 +14,7 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "FileVersion", "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
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user