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:
roberto 2008-02-07 18:03:38 +00:00
parent 05b91e6029
commit dfffba6c4a
22 changed files with 290 additions and 172 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -6,6 +6,7 @@ object srvArticulos: TsrvArticulos
ConnectionName = 'IBX'
ServiceSchema = schArticulos
ServiceDataStreamer = Bin2DataStreamer
AllowWhereSQL = True
ExportedDataTables = <>
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
Height = 229

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 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;

View File

@ -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;

View File

@ -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.

View File

@ -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"