diff --git a/Resources/Iconos/Inventario/16x16/InventarioObras.png b/Resources/Iconos/Inventario/16x16/InventarioObras.png
new file mode 100644
index 00000000..ce000a4d
Binary files /dev/null and b/Resources/Iconos/Inventario/16x16/InventarioObras.png differ
diff --git a/Resources/Iconos/Inventario/24x24/InventarioObras.png b/Resources/Iconos/Inventario/24x24/InventarioObras.png
new file mode 100644
index 00000000..41b7231c
Binary files /dev/null and b/Resources/Iconos/Inventario/24x24/InventarioObras.png differ
diff --git a/Resources/Iconos/Inventario/24x24/Thumbs.db b/Resources/Iconos/Inventario/24x24/Thumbs.db
index b3056588..de5ae813 100644
Binary files a/Resources/Iconos/Inventario/24x24/Thumbs.db and b/Resources/Iconos/Inventario/24x24/Thumbs.db differ
diff --git a/Resources/Iconos/Inventario/28x28/InventarioObras.png b/Resources/Iconos/Inventario/28x28/InventarioObras.png
new file mode 100644
index 00000000..440886ab
Binary files /dev/null and b/Resources/Iconos/Inventario/28x28/InventarioObras.png differ
diff --git a/Resources/Iconos/Obras/16x16/Obras.png b/Resources/Iconos/Obras/16x16/Obras.png
new file mode 100644
index 00000000..66a865d3
Binary files /dev/null and b/Resources/Iconos/Obras/16x16/Obras.png differ
diff --git a/Resources/Iconos/Obras/24x24/Obras.png b/Resources/Iconos/Obras/24x24/Obras.png
new file mode 100644
index 00000000..ef35b2ac
Binary files /dev/null and b/Resources/Iconos/Obras/24x24/Obras.png differ
diff --git a/Resources/Iconos/Obras/28x28/Obras.png b/Resources/Iconos/Obras/28x28/Obras.png
new file mode 100644
index 00000000..67f65e76
Binary files /dev/null and b/Resources/Iconos/Obras/28x28/Obras.png differ
diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index 1a96a865..bfcb9326 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -53,57 +53,57 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Base/Utiles/uDataTableUtils.pas b/Source/Base/Utiles/uDataTableUtils.pas
index 9d82981a..f6863eaf 100644
--- a/Source/Base/Utiles/uDataTableUtils.pas
+++ b/Source/Base/Utiles/uDataTableUtils.pas
@@ -84,8 +84,8 @@ begin
end;
ASource.Filter := '';
- if ASource.Active then
- ASource.Close;
+// if ASource.Active then
+// ASource.Close;
//Si no hay elemento seleccionados filtramos para que ATarget se quede vacia
if (AObj.SelectedRecords.Count = 0) then
@@ -98,7 +98,6 @@ begin
ASource.Filter := ASource.Filter + ' or ';
ASource.Filter := ASource.Filter + '(ID = ' + IntToStr(AObj.SelectedRecords.Items[i]) + ')';
end;
-
ASource.Filtered := True;
end;
@@ -112,8 +111,8 @@ begin
ATarget.LogicalName := ASource.LogicalName; // We need to specify new dataset LogicalName
ATarget.RemoteFetchEnabled := False; // "Desconectamos" la tabla destino del servidor
- if not ASource.Active then
- ASource.Open;
+// if not ASource.Active then
+// ASource.Open;
ASource.First;
DADataStreamer.WriteDataset(DABin, ASource, [woRows, woSchema], -1);
diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj
index dfd84cc9..e287dcf0 100644
--- a/Source/Cliente/FactuGES.dproj
+++ b/Source/Cliente/FactuGES.dproj
@@ -54,7 +54,7 @@
Delphi.Personality
VCLApplication
-FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1100FalseFalseFalseFalseFalse30821252Rodax Software S.L.1.1.0.0FactuGESFactuGES1.1.0.0
+FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1200FalseFalseFalseFalseFalse30821252Rodax Software S.L.1.2.0.0FactuGESFactuGES1.2.0.0
diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc
index de70c028..58b90fec 100644
--- a/Source/Cliente/FactuGES.rc
+++ b/Source/Cliente/FactuGES.rc
@@ -1,7 +1,7 @@
MAINICON ICON "C:\Codigo Tecsitel\Resources\Iconos\Factuges.ico"
1 VERSIONINFO
-FILEVERSION 1,1,0,0
-PRODUCTVERSION 1,1,0,0
+FILEVERSION 1,2,0,0
+PRODUCTVERSION 1,2,0,0
FILEFLAGSMASK 0x3FL
FILEFLAGS 0x00L
FILEOS 0x40004L
@@ -13,10 +13,10 @@ BEGIN
BLOCK "0C0A04E4"
BEGIN
VALUE "CompanyName", "Rodax Software S.L.\0"
- VALUE "FileVersion", "1.1.0.0\0"
+ VALUE "FileVersion", "1.2.0.0\0"
VALUE "InternalName", "FactuGES\0"
VALUE "ProductName", "FactuGES\0"
- VALUE "ProductVersion", "1.1.0.0\0"
+ VALUE "ProductVersion", "1.2.0.0\0"
END
END
BLOCK "VarFileInfo"
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index 29941151..ac05f03c 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/AlbaranesProveedor_controller.dproj b/Source/Modulos/Albaranes de proveedor/Controller/AlbaranesProveedor_controller.dproj
index e06c5dd8..da25fc91 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/AlbaranesProveedor_controller.dproj
+++ b/Source/Modulos/Albaranes de proveedor/Controller/AlbaranesProveedor_controller.dproj
@@ -48,14 +48,14 @@
MainSource
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
index 8dd8bc9e..74faa54d 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
+++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
@@ -337,7 +337,6 @@ begin
AInventarioRecibido.DataTable.Active := True;
end;
- Self.Anadir(AAlbaran);
CopiarPedidoAAlbaran(APedido, AAlbaran);
CopiarArticulosAAlbaran(APedido, AAlbaran, AInventarioRecibido);
RecalcularImportes(AAlbaran);
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uDetallesAlbaranProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uDetallesAlbaranProveedorController.pas
index f85db022..a3b02e8a 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/uDetallesAlbaranProveedorController.pas
+++ b/Source/Modulos/Albaranes de proveedor/Controller/uDetallesAlbaranProveedorController.pas
@@ -42,7 +42,7 @@ type
implementation
-uses Variants, uDialogUtils, uControllerDetallesBase, uDataModuleAlbaranesProveedor, uArticulosAlbaranProveedorController,
+uses uDAInterfaces, Variants, uDialogUtils, uControllerDetallesBase, uDataModuleAlbaranesProveedor, uArticulosAlbaranProveedorController,
uDataTableUtils, uCalculosUtils, schArticulosClient_Intf;
{ TDetallesAlbaranProveedorController }
@@ -126,6 +126,9 @@ end;
procedure TDetallesAlbaranProveedorController.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+var
+ AField: TDAField;
+
begin
if Assigned(AArticulos) then
ADetalles.DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat := AArticulos.DESCUENTO
@@ -135,8 +138,22 @@ begin
//Sobreescribimos el id del articulo por el campo ID_ARTICULO que nos hemos tenido que crear para
//almacenar el codigo de artículo ya que ID esta destinado a ID_ARTICULO||ID_PROVEEDOR, para identificar de forma
//unica los articulos desglosados por proveedor.
- ADetalles.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant := AArticulos.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant;
- ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_FABRICANTE).AsVariant := AArticulos.DataTable.FieldByName(fld_ArticulosREFERENCIA_FABR).AsVariant;
+ //Validamos la existencia de todos los campos necesarios
+ AField := AArticulos.DataTable.FindField(CAMPO_ID_ARTICULOS);
+ if Assigned(AField) then
+ begin
+// if not ADetalles.DataTable.Editing then
+// ADetalles.DataTable.Edit;
+ ADetalles.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant := AField.AsVariant;
+ end;
+
+ AField := AArticulos.DataTable.FindField(fld_ArticulosREFERENCIA_FABR);
+ if Assigned(AField) then
+ begin
+// if not ADetalles.DataTable.Editing then
+// ADetalles.DataTable.Edit;
+ ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_FABRICANTE).AsVariant := AField.AsVariant;
+ end;
end;
procedure TDetallesAlbaranProveedorController.RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
diff --git a/Source/Modulos/Facturas de proveedor/Controller/uDetallesFacturaProveedorController.pas b/Source/Modulos/Facturas de proveedor/Controller/uDetallesFacturaProveedorController.pas
index 29f75936..8f5a8d75 100644
--- a/Source/Modulos/Facturas de proveedor/Controller/uDetallesFacturaProveedorController.pas
+++ b/Source/Modulos/Facturas de proveedor/Controller/uDetallesFacturaProveedorController.pas
@@ -45,7 +45,7 @@ implementation
{ TDetallesFacturaProveedorController }
-uses Variants, uDataModuleFacturasProveedor, uArticulosFacturaProveedorController,
+uses uDAInterfaces, Variants, uDataModuleFacturasProveedor, uArticulosFacturaProveedorController,
uControllerDetallesBase, Dialogs, SysUtils, uDialogUtils, uCalculosUtils, schArticulosClient_Intf;
procedure TDetallesFacturaProveedorController.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor);
@@ -132,6 +132,9 @@ begin
end;
procedure TDetallesFacturaProveedorController.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+var
+ AField: TDAField;
+
begin
if Assigned(AArticulos) then
ADetalles.DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat := AArticulos.DESCUENTO
@@ -141,8 +144,13 @@ begin
//Sobreescribimos el id del articulo por el campo ID_ARTICULO que nos hemos tenido que crear para
//almacenar el codigo de artículo ya que ID esta destinado a ID_ARTICULO||ID_PROVEEDOR, para identificar de forma
//unica los articulos desglosados por proveedor.
- ADetalles.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant := AArticulos.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant;
- ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_FABRICANTE).AsVariant := AArticulos.DataTable.FieldByName(fld_ArticulosREFERENCIA_FABR).AsVariant;
+ AField := AArticulos.DataTable.FindField(CAMPO_ID_ARTICULOS);
+ if Assigned(AField) then
+ ADetalles.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant := AField.AsVariant;
+
+ AField := AArticulos.DataTable.FindField(fld_ArticulosREFERENCIA_FABR);
+ if Assigned(AField) then
+ ADetalles.DataTable.FieldByName(fld_ArticulosREFERENCIA_FABR).AsVariant := AField.AsVariant;
end;
procedure TDetallesFacturaProveedorController.ValidarCampos(DataTable: TDADataTable);
diff --git a/Source/Modulos/Inventario/Controller/Inventario_controller.dpk b/Source/Modulos/Inventario/Controller/Inventario_controller.dpk
index b9db5723..5d85b5b1 100644
--- a/Source/Modulos/Inventario/Controller/Inventario_controller.dpk
+++ b/Source/Modulos/Inventario/Controller/Inventario_controller.dpk
@@ -32,7 +32,9 @@ requires
PresupuestosCliente_model,
PresupuestosCliente_controller,
PedidosProveedor_controller,
- PedidosProveedor_model;
+ PedidosProveedor_model,
+ Obras_controller,
+ Obras_model;
contains
uIEditorInventario in 'View\uIEditorInventario.pas',
diff --git a/Source/Modulos/Inventario/Controller/Inventario_controller.dproj b/Source/Modulos/Inventario/Controller/Inventario_controller.dproj
index b94cda3a..82eb23d7 100644
--- a/Source/Modulos/Inventario/Controller/Inventario_controller.dproj
+++ b/Source/Modulos/Inventario/Controller/Inventario_controller.dproj
@@ -46,14 +46,16 @@
MainSource
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
TDataModule
diff --git a/Source/Modulos/Inventario/Controller/View/uIEditorInventario.pas b/Source/Modulos/Inventario/Controller/View/uIEditorInventario.pas
index 9592d6b9..b4e6b0b9 100644
--- a/Source/Modulos/Inventario/Controller/View/uIEditorInventario.pas
+++ b/Source/Modulos/Inventario/Controller/View/uIEditorInventario.pas
@@ -8,6 +8,10 @@ uses
type
IEditorInventario = interface(IEditorGridBase)
['{D9C21CA9-5923-4F89-ABBC-81128D2F5272}']
+ function GetTipoInventario: String;
+ procedure SetTipoInventario(const Value: String);
+ property TipoInventario: String read GetTipoInventario write SetTipoInventario;
+
function GetInventario: IBizInventario;
procedure SetInventario(const Value: IBizInventario);
property Inventario: IBizInventario read GetInventario write SetInventario;
diff --git a/Source/Modulos/Inventario/Controller/uInventarioController.pas b/Source/Modulos/Inventario/Controller/uInventarioController.pas
index 26fcc90d..f08c5209 100644
--- a/Source/Modulos/Inventario/Controller/uInventarioController.pas
+++ b/Source/Modulos/Inventario/Controller/uInventarioController.pas
@@ -6,9 +6,13 @@ interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleInventario, uBizInventario, uArticulosInventarioController,
- uAlmacenesController, uPresupuestosClienteController, uBizPresupuestosCliente,
- uPedidosProveedorController, uBizPedidosProveedor, uBizArticulos,
- uBizAlmacenes;
+ uAlmacenesController, uObrasController, uPresupuestosClienteController,
+ uBizPresupuestosCliente, uPedidosProveedorController, uBizPedidosProveedor,
+ uBizArticulos, uBizAlmacenes, uBizObras;
+
+const
+ CTE_INV_ALMACEN = 'ALMACEN';
+ CTE_INV_OBRA = 'OBRA';
type
IInventarioController = interface(IObservador)
@@ -19,14 +23,16 @@ type
function Trasladar(AInventario : IBizInventario; Todos: Boolean): Boolean;
// procedure RecibirArticulos(Const APedido: IBizPedidoProveedor; Const CodigoAlmacenDes: Integer); overload;
// procedure RecibirPedidos(Const CodigoAlmacenDes: Integer);
- procedure Reservar(AInventario : IBizInventario);
+ procedure Reservar(AInventario: IBizInventario; Const CodigoAlmacenDestino: Integer);
function Liberar(AInventario : IBizInventario): Boolean;
function Ver(AArticulos: IBizInventario; AInventario : IBizInventario; APedido: IBizPedidoProveedor = Nil): Boolean;
- procedure VerTodos(AInventario: IBizInventario);
+ procedure VerTodos(AInventario: IBizInventario; const pTipoInventario: String);
procedure VerReservas(AArticulo: IBizInventario);
function BuscarTodos: IBizInventario;
+ function BuscarTodosAlmacenes: IBizInventario;
+ function BuscarTodosObras: IBizInventario;
function Buscar(const ID_ALMACEN: Integer): IBizInventario;
function BuscarDetalleReservas: IBizDetalleReservas;
function ExtraerSeleccionados(AArticulos: IBizInventario) : IBizInventario;
@@ -44,25 +50,31 @@ type
procedure SetAlmacenesController(const Value: IAlmacenesController);
property AlmacenesController: IAlmacenesController read GetAlmacenesController write SetAlmacenesController;
+ function GetObrasController: IObrasController;
+ procedure SetObrasController(const Value: IObrasController);
+ property ObrasController: IObrasController read GetObrasController write SetObrasController;
+
procedure Copiar(AArticulos: IBizInventario; ADetalles: IDAStronglyTypedDataTable; AInventario: IBizInventario); overload;
end;
TInventarioController = class(TObservador, IInventarioController)
private
FAlmacenesController: IAlmacenesController;
+ FObrasController: IObrasController;
FArticulosController : IArticulosInventarioController;
FPresupuestosClienteController : IPresupuestosClienteController;
FPedidosProveedorController : IPedidosProveedorController;
function GetAlmacenesController: IAlmacenesController;
+ function GetObrasController: IObrasController;
function GetArticulosController: IArticulosInventarioController;
function GetPresupuestosClienteController: IPresupuestosClienteController;
function GetPedidosProveedorController: IPedidosProveedorController;
procedure SetAlmacenesController(const Value: IAlmacenesController);
+ procedure SetObrasController(const Value: IObrasController);
procedure SetArticulosController(const Value: IArticulosInventarioController);
procedure SetPresupuestosClienteController(const Value: IPresupuestosClienteController);
procedure SetPedidosProveedorController(const Value: IPedidosProveedorController);
- function Reservar(AInventario : IBizInventario; Todos: Boolean; Const APedido: IBizPresupuestoCliente): Boolean; overload;
function Liberar(AInventario : IBizInventario; Todos: Boolean): Boolean; overload;
function EntradaSalidaArticulos(AArticulos, AInventario : IBizInventario; APedido: IBizPedidoProveedor = Nil): Boolean; overload;
@@ -89,6 +101,7 @@ type
public
property AlmacenesController: IAlmacenesController read GetAlmacenesController write SetAlmacenesController;
+ property ObrasController: IObrasController read GetObrasController write SetObrasController;
property ArticulosController: IArticulosInventarioController read GetArticulosController write SetArticulosController;
property PresupuestosClienteController: IPresupuestosClienteController read GetPresupuestosClienteController write SetPresupuestosClienteController;
property PedidosProveedorController: IPedidosProveedorController read GetPedidosProveedorController write SetPedidosProveedorController;
@@ -104,6 +117,8 @@ type
function Buscar(const ID_ALMACEN: Integer): IBizInventario;
function BuscarTodos: IBizInventario;
+ function BuscarTodosAlmacenes: IBizInventario;
+ function BuscarTodosObras: IBizInventario;
function BuscarDetalleReservas: IBizDetalleReservas;
function ElegirArticulos(AArticulos : IBizInventario; AMensaje: String; AMultiSelect: Boolean): IBizInventario;
function ExtraerSeleccionados(AArticulos: IBizInventario) : IBizInventario;
@@ -116,8 +131,9 @@ type
procedure TrasladarArticulosLibre(AInventario: IBizInventario; Const CodigoAlmacenOrigen: Integer; Const CodigoAlmacenDestino: Integer);
function EntradaPedido(AInventario: IBizInventario; APedido: IBizPedidoProveedor; ADetalles: IDAStronglyTypedDataTable; var ADetallesFinal: IBizInventario): Boolean;
function SalidaAlbaran(AInventario: IBizInventario; Const CodigoAlmacenOrigen: Integer; ADetalles: IDAStronglyTypedDataTable): Boolean;
+ procedure Reservar(AInventario: IBizInventario; Const CodigoAlmacenDestino: Integer);
- procedure VerTodos(AInventario: IBizInventario);
+ procedure VerTodos(AInventario: IBizInventario; const pTipoInventario: String);
function Ver(AArticulos: IBizInventario; AInventario : IBizInventario; APedido: IBizPedidoProveedor = Nil): Boolean;
procedure VerReservas(AArticulo: IBizInventario);
@@ -125,7 +141,6 @@ type
function Guardar(AArticulos : IBizInventario; const FechaMovimiento: TDateTime; const CausaMovimiento: String): Boolean;
function Liberar(AInventario : IBizInventario): Boolean; overload;
- procedure Reservar(AInventario : IBizInventario); overload;
end;
implementation
@@ -139,7 +154,7 @@ uses
uControllerDetallesBase, uDialogUtils, uFactuGES_App,
uIEditorEntradaSalidaArticulos, schArticulosClient_Intf,
uIEditorElegirArticulosAlmacen, uInventarioUtils,
- uIEditorDetalleReservas;
+ uIEditorDetalleReservas, schAlmacenesClient_Intf;
{ TInventarioController }
@@ -195,6 +210,54 @@ begin
FiltrarEmpresa(Result);
end;
+function TInventarioController.BuscarTodosAlmacenes: IBizInventario;
+var
+ Condicion: TDAWhereExpression;
+begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+
+ // Filtrar los pedidos pendientes de recepcion
+ with Result.DataTable.DynamicWhere do
+ begin
+ // (TIPO_ALMACEN <> ALMACEN)
+ Condicion := NewBinaryExpression(NewField('', fld_InventarioTIPO_ALMACEN), NewConstant(CTE_INV_ALMACEN, datString), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TInventarioController.BuscarTodosObras: IBizInventario;
+var
+ Condicion: TDAWhereExpression;
+begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+
+ // Filtrar los pedidos pendientes de recepcion
+ with Result.DataTable.DynamicWhere do
+ begin
+ // (TIPO_ALMACEN <> ALMACEN)
+ Condicion := NewBinaryExpression(NewField('', fld_InventarioTIPO_ALMACEN), NewConstant(CTE_INV_OBRA, datString), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
procedure TInventarioController.Copiar(AArticulos: IBizInventario; ADetalles: IDAStronglyTypedDataTable; AInventario: IBizInventario);
{
Procedimiento que copia en AArticulos, todos los detalles pasados por parametro ADetalles
@@ -284,6 +347,7 @@ begin
AsignarDataModule;
FArticulosController := TArticulosInventarioController.Create;
FAlmacenesController := TAlmacenesController.Create;
+ FObrasController := TObrasController.Create;
FPresupuestosClienteController := TPresupuestosClienteController.Create;
FPedidosProveedorController := TPedidosProveedorController.Create;
end;
@@ -316,6 +380,7 @@ begin
FDataModule := Nil;
FArticulosController := Nil;
FAlmacenesController := Nil;
+ FObrasController := Nil;
FPresupuestosClienteController := Nil;
FPedidosProveedorController := Nil;
inherited;
@@ -497,7 +562,7 @@ begin
end;
end;
-procedure TInventarioController.VerTodos(AInventario: IBizInventario);
+procedure TInventarioController.VerTodos(AInventario: IBizInventario; const pTipoInventario: String);
var
AEditor : IEditorInventario;
begin
@@ -509,6 +574,7 @@ begin
with AEditor do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ TipoInventario := pTipoInventario;
Inventario := AInventario;
MultiSelect := False;
ShowEmbedded;
@@ -671,6 +737,23 @@ begin
//
end;
+procedure TInventarioController.Reservar(AInventario: IBizInventario; const CodigoAlmacenDestino: Integer);
+var
+ AArticulos: IBizInventario;
+begin
+ try
+ AArticulos := Buscar(ID_NULO);
+
+ //Se queda en la clase de negocio para así todos y cada uno de los artículos que
+ //se agreguen se asigne automáticamente el codigo de almacen destino en OnNewRecord
+// AArticulos.TipoMovimiento := tEntradaLibre;
+// AArticulos.IDAlmacenDestino := CodigoAlmacenDestino;
+ EntradaSalidaArticulos(AArticulos, AInventario);
+ finally
+ AArticulos := Nil;
+ end;
+end;
+
{procedure TInventarioController.RecibirPedidos(const CodigoAlmacenDes: Integer);
var
APedido: IBizPedidoProveedor;
@@ -688,72 +771,6 @@ begin
end;}
-procedure TInventarioController.Reservar(AInventario : IBizInventario);
-var
- APresupuesto: IBizPresupuestoCliente;
-begin
- if not Assigned(AInventario) then
- exit;
-
- try
- APresupuesto := FPresupuestosClienteController.BuscarPendientes;
- APresupuesto := FPresupuestosClienteController.ElegirPresupuestos(APresupuesto, '', False);
-
- if Assigned(APresupuesto) then
- Reservar(AInventario, False, APresupuesto);
-
- finally
- APresupuesto := Nil;
- end;
-end;
-
-function TInventarioController.Reservar(AInventario : IBizInventario; Todos: Boolean; const APedido: IBizPresupuestoCliente): Boolean;
-begin
-
- Result := False;
-
-{ if not Assigned(AInventario) then
- exit;
-
- try
- with AInventario.DataTable do
- begin
- if not Active then
- Active := True;
-
- if Todos then
- begin
- First;
- while not EOF do
- begin
- Edit;
- AInventario.ID_PEDIDO_CLIENTE := APedido.ID;
- AInventario.REFERENCIA_PED_CLI := APedido.REFERENCIA;
- Post;
- Next;
- end;
- end
- else
- begin
- Edit;
- AInventario.ID_PEDIDO_CLIENTE := APedido.ID;
- AInventario.REFERENCIA_PED_CLI := APedido.REFERENCIA;
- Post;
- end;
-
- ApplyUpdates;
- Result := True;
- end;
- except
- on E: EDAApplyUpdateFailed do
- begin
- AInventario.DataTable.CancelUpdates;
- showmessage('Error al reservar para el pedido');
- end;
- end;
-}
-end;
-
function TInventarioController.SalidaAlbaran(AInventario: IBizInventario; const CodigoAlmacenOrigen: Integer; ADetalles: IDAStronglyTypedDataTable): Boolean;
var
AArticulos: IBizInventario;
@@ -797,6 +814,11 @@ begin
FAlmacenesController := Value;
end;
+procedure TInventarioController.SetObrasController(const Value: IObrasController);
+begin
+ FObrasController := Value;
+end;
+
procedure TInventarioController.SetArticulosController(const Value: IArticulosInventarioController);
begin
FArticulosController := Value
@@ -911,6 +933,11 @@ begin
Result := FAlmacenesController;
end;
+function TInventarioController.GetObrasController: IObrasController;
+begin
+ Result := FObrasController;
+end;
+
function TInventarioController.GetArticulosController: IArticulosInventarioController;
begin
Result := FArticulosController;
diff --git a/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm b/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
index 1eb75f59..0416e48b 100644
--- a/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
+++ b/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
@@ -207,14 +207,17 @@ inherited DataModuleInventario: TDataModuleInventario
DisplayLabel = 'Pendiente de recibir'
DictionaryEntry = 'INVENTARIO_PENDIENTE_RECEPCION'
end
+ item
+ Name = 'TIPO_ALMACEN'
+ DataType = datString
+ Size = 10
+ end
item
Name = 'ID'
DataType = datInteger
- LogChanges = False
DisplayLabel = 'INVENTARIO_ID'
DictionaryEntry = 'INVENTARIO_ID'
InPrimaryKey = True
- Calculated = True
end
item
Name = 'CANTIDAD'
diff --git a/Source/Modulos/Inventario/Inventario_Group.groupproj b/Source/Modulos/Inventario/Inventario_Group.groupproj
index ed0b964c..a1094801 100644
--- a/Source/Modulos/Inventario/Inventario_Group.groupproj
+++ b/Source/Modulos/Inventario/Inventario_Group.groupproj
@@ -11,6 +11,8 @@
+
+
@@ -95,6 +97,15 @@
+
+
+
+
+
+
+
+
+
@@ -131,14 +142,23 @@
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas b/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
index 911ceee9..af2a41c2 100644
--- a/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
+++ b/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
@@ -9,8 +9,8 @@ const
{ Data table rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_Inventario = '{0C73DA8F-2528-4826-B262-E5B7F28AE644}';
- RID_DetalleReservas = '{EC76928D-0721-4595-BB59-A63FA3CD75DF}';
+ RID_Inventario = '{EF34850B-0D51-4B0C-8CD5-4C9DD0CEA30A}';
+ RID_DetalleReservas = '{B4EFAB5C-C1A7-4932-991F-C6641A5456CD}';
{ Data table names }
nme_Inventario = 'Inventario';
@@ -28,6 +28,7 @@ const
fld_InventarioUNIDADES_ALMACEN = 'UNIDADES_ALMACEN';
fld_InventarioRESERVA = 'RESERVA';
fld_InventarioPENDIENTE_RECEPCION = 'PENDIENTE_RECEPCION';
+ fld_InventarioTIPO_ALMACEN = 'TIPO_ALMACEN';
fld_InventarioID = 'ID';
fld_InventarioCANTIDAD = 'CANTIDAD';
fld_InventarioFECHA_MOVIMIENTO = 'FECHA_MOVIMIENTO';
@@ -46,11 +47,12 @@ const
idx_InventarioUNIDADES_ALMACEN = 8;
idx_InventarioRESERVA = 9;
idx_InventarioPENDIENTE_RECEPCION = 10;
- idx_InventarioID = 11;
- idx_InventarioCANTIDAD = 12;
- idx_InventarioFECHA_MOVIMIENTO = 13;
- idx_InventarioCAUSA = 14;
- idx_InventarioTIPO = 15;
+ idx_InventarioTIPO_ALMACEN = 11;
+ idx_InventarioID = 12;
+ idx_InventarioCANTIDAD = 13;
+ idx_InventarioFECHA_MOVIMIENTO = 14;
+ idx_InventarioCAUSA = 15;
+ idx_InventarioTIPO = 16;
{ DetalleReservas fields }
fld_DetalleReservasID_ALB = 'ID_ALB';
@@ -89,7 +91,7 @@ const
type
{ IInventario }
IInventario = interface(IDAStronglyTypedDataTable)
- ['{01E8B549-9E00-473C-8C13-6230053472A1}']
+ ['{42DB1B40-71E1-454F-93DC-E35E6FE3EEE1}']
{ Property getters and setters }
function GetID_ALMACENValue: Integer;
procedure SetID_ALMACENValue(const aValue: Integer);
@@ -135,6 +137,10 @@ type
procedure SetPENDIENTE_RECEPCIONValue(const aValue: Int64);
function GetPENDIENTE_RECEPCIONIsNull: Boolean;
procedure SetPENDIENTE_RECEPCIONIsNull(const aValue: Boolean);
+ function GetTIPO_ALMACENValue: String;
+ procedure SetTIPO_ALMACENValue(const aValue: String);
+ function GetTIPO_ALMACENIsNull: Boolean;
+ procedure SetTIPO_ALMACENIsNull(const aValue: Boolean);
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
function GetIDIsNull: Boolean;
@@ -180,6 +186,8 @@ type
property RESERVAIsNull: Boolean read GetRESERVAIsNull write SetRESERVAIsNull;
property PENDIENTE_RECEPCION: Int64 read GetPENDIENTE_RECEPCIONValue write SetPENDIENTE_RECEPCIONValue;
property PENDIENTE_RECEPCIONIsNull: Boolean read GetPENDIENTE_RECEPCIONIsNull write SetPENDIENTE_RECEPCIONIsNull;
+ property TIPO_ALMACEN: String read GetTIPO_ALMACENValue write SetTIPO_ALMACENValue;
+ property TIPO_ALMACENIsNull: Boolean read GetTIPO_ALMACENIsNull write SetTIPO_ALMACENIsNull;
property ID: Integer read GetIDValue write SetIDValue;
property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue;
@@ -241,6 +249,10 @@ type
procedure SetPENDIENTE_RECEPCIONValue(const aValue: Int64); virtual;
function GetPENDIENTE_RECEPCIONIsNull: Boolean; virtual;
procedure SetPENDIENTE_RECEPCIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_ALMACENValue: String; virtual;
+ procedure SetTIPO_ALMACENValue(const aValue: String); virtual;
+ function GetTIPO_ALMACENIsNull: Boolean; virtual;
+ procedure SetTIPO_ALMACENIsNull(const aValue: Boolean); virtual;
function GetIDValue: Integer; virtual;
procedure SetIDValue(const aValue: Integer); virtual;
function GetIDIsNull: Boolean; virtual;
@@ -285,6 +297,8 @@ type
property RESERVAIsNull: Boolean read GetRESERVAIsNull write SetRESERVAIsNull;
property PENDIENTE_RECEPCION: Int64 read GetPENDIENTE_RECEPCIONValue write SetPENDIENTE_RECEPCIONValue;
property PENDIENTE_RECEPCIONIsNull: Boolean read GetPENDIENTE_RECEPCIONIsNull write SetPENDIENTE_RECEPCIONIsNull;
+ property TIPO_ALMACEN: String read GetTIPO_ALMACENValue write SetTIPO_ALMACENValue;
+ property TIPO_ALMACENIsNull: Boolean read GetTIPO_ALMACENIsNull write SetTIPO_ALMACENIsNull;
property ID: Integer read GetIDValue write SetIDValue;
property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue;
@@ -304,7 +318,7 @@ type
{ IDetalleReservas }
IDetalleReservas = interface(IDAStronglyTypedDataTable)
- ['{FF881AE1-5043-485D-9E10-52B956FB4276}']
+ ['{BFD1131A-A0B0-4AA4-B8A0-84D8F5D873EF}']
{ Property getters and setters }
function GetID_ALBValue: Integer;
procedure SetID_ALBValue(const aValue: Integer);
@@ -751,6 +765,27 @@ begin
DataTable.Fields[idx_InventarioPENDIENTE_RECEPCION].AsVariant := Null;
end;
+function TInventarioDataTableRules.GetTIPO_ALMACENValue: String;
+begin
+ result := DataTable.Fields[idx_InventarioTIPO_ALMACEN].AsString;
+end;
+
+procedure TInventarioDataTableRules.SetTIPO_ALMACENValue(const aValue: String);
+begin
+ DataTable.Fields[idx_InventarioTIPO_ALMACEN].AsString := aValue;
+end;
+
+function TInventarioDataTableRules.GetTIPO_ALMACENIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_InventarioTIPO_ALMACEN].IsNull;
+end;
+
+procedure TInventarioDataTableRules.SetTIPO_ALMACENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_InventarioTIPO_ALMACEN].AsVariant := Null;
+end;
+
function TInventarioDataTableRules.GetIDValue: Integer;
begin
result := DataTable.Fields[idx_InventarioID].AsInteger;
diff --git a/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas b/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
index 8e27a333..a1801879 100644
--- a/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
+++ b/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
@@ -9,13 +9,13 @@ const
{ Delta rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_InventarioDelta = '{552B07EE-8CC1-4A6C-ACC8-1B9D569F37CD}';
- RID_DetalleReservasDelta = '{0640D81A-8FD0-47AB-AB37-F4A91844711C}';
+ RID_InventarioDelta = '{44A696E0-2F61-4AFE-9226-6DC8AEC03305}';
+ RID_DetalleReservasDelta = '{44070FBD-E2B5-4D2E-AE8F-5AA97849CBA6}';
type
{ IInventarioDelta }
IInventarioDelta = interface(IInventario)
- ['{552B07EE-8CC1-4A6C-ACC8-1B9D569F37CD}']
+ ['{44A696E0-2F61-4AFE-9226-6DC8AEC03305}']
{ Property getters and setters }
function GetOldID_ALMACENValue : Integer;
function GetOldID_ARTICULOValue : Integer;
@@ -28,6 +28,7 @@ type
function GetOldUNIDADES_ALMACENValue : Int64;
function GetOldRESERVAValue : Int64;
function GetOldPENDIENTE_RECEPCIONValue : Int64;
+ function GetOldTIPO_ALMACENValue : String;
function GetOldIDValue : Integer;
function GetOldCANTIDADValue : Integer;
function GetOldFECHA_MOVIMIENTOValue : DateTime;
@@ -46,6 +47,7 @@ type
property OldUNIDADES_ALMACEN : Int64 read GetOldUNIDADES_ALMACENValue;
property OldRESERVA : Int64 read GetOldRESERVAValue;
property OldPENDIENTE_RECEPCION : Int64 read GetOldPENDIENTE_RECEPCIONValue;
+ property OldTIPO_ALMACEN : String read GetOldTIPO_ALMACENValue;
property OldID : Integer read GetOldIDValue;
property OldCANTIDAD : Integer read GetOldCANTIDADValue;
property OldFECHA_MOVIMIENTO : DateTime read GetOldFECHA_MOVIMIENTOValue;
@@ -124,6 +126,12 @@ type
function GetOldPENDIENTE_RECEPCIONIsNull: Boolean; virtual;
procedure SetPENDIENTE_RECEPCIONValue(const aValue: Int64); virtual;
procedure SetPENDIENTE_RECEPCIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_ALMACENValue: String; virtual;
+ function GetTIPO_ALMACENIsNull: Boolean; virtual;
+ function GetOldTIPO_ALMACENValue: String; virtual;
+ function GetOldTIPO_ALMACENIsNull: Boolean; virtual;
+ procedure SetTIPO_ALMACENValue(const aValue: String); virtual;
+ procedure SetTIPO_ALMACENIsNull(const aValue: Boolean); virtual;
function GetIDValue: Integer; virtual;
function GetIDIsNull: Boolean; virtual;
function GetOldIDValue: Integer; virtual;
@@ -200,6 +208,10 @@ type
property PENDIENTE_RECEPCIONIsNull : Boolean read GetPENDIENTE_RECEPCIONIsNull write SetPENDIENTE_RECEPCIONIsNull;
property OldPENDIENTE_RECEPCION : Int64 read GetOldPENDIENTE_RECEPCIONValue;
property OldPENDIENTE_RECEPCIONIsNull : Boolean read GetOldPENDIENTE_RECEPCIONIsNull;
+ property TIPO_ALMACEN : String read GetTIPO_ALMACENValue write SetTIPO_ALMACENValue;
+ property TIPO_ALMACENIsNull : Boolean read GetTIPO_ALMACENIsNull write SetTIPO_ALMACENIsNull;
+ property OldTIPO_ALMACEN : String read GetOldTIPO_ALMACENValue;
+ property OldTIPO_ALMACENIsNull : Boolean read GetOldTIPO_ALMACENIsNull;
property ID : Integer read GetIDValue write SetIDValue;
property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull;
property OldID : Integer read GetOldIDValue;
@@ -229,7 +241,7 @@ type
{ IDetalleReservasDelta }
IDetalleReservasDelta = interface(IDetalleReservas)
- ['{0640D81A-8FD0-47AB-AB37-F4A91844711C}']
+ ['{44070FBD-E2B5-4D2E-AE8F-5AA97849CBA6}']
{ Property getters and setters }
function GetOldID_ALBValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -786,6 +798,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioPENDIENTE_RECEPCION] := Null;
end;
+function TInventarioBusinessProcessorRules.GetTIPO_ALMACENValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioTIPO_ALMACEN];
+end;
+
+function TInventarioBusinessProcessorRules.GetTIPO_ALMACENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioTIPO_ALMACEN]);
+end;
+
+function TInventarioBusinessProcessorRules.GetOldTIPO_ALMACENValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_InventarioTIPO_ALMACEN];
+end;
+
+function TInventarioBusinessProcessorRules.GetOldTIPO_ALMACENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InventarioTIPO_ALMACEN]);
+end;
+
+procedure TInventarioBusinessProcessorRules.SetTIPO_ALMACENValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioTIPO_ALMACEN] := aValue;
+end;
+
+procedure TInventarioBusinessProcessorRules.SetTIPO_ALMACENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioTIPO_ALMACEN] := Null;
+end;
+
function TInventarioBusinessProcessorRules.GetIDValue: Integer;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_InventarioID];
diff --git a/Source/Modulos/Inventario/Model/uBizInventario.pas b/Source/Modulos/Inventario/Model/uBizInventario.pas
index cfb9ceb0..3fcce694 100644
--- a/Source/Modulos/Inventario/Model/uBizInventario.pas
+++ b/Source/Modulos/Inventario/Model/uBizInventario.pas
@@ -57,6 +57,9 @@ type
FSeleccionableInterface : ISeleccionable;
procedure OnNewRecord(Sender: TDADataTable); override;
procedure OnCalcFields(Sender: TDADataTable); override;
+ procedure BeforeOpen(Sender: TDADataTable); override;
+ procedure AfterOpen(Sender: TDADataTable); override;
+
public
property IDAlmacenOrigen: Integer read GetIDAlmacenOrigen write SetIDAlmacenOrigen;
@@ -66,16 +69,45 @@ type
write FSeleccionableInterface implements ISeleccionable;
constructor Create(aDataTable: TDADataTable); override;
+
destructor Destroy; override;
end;
implementation
uses
- Dialogs, uDACDSDataTable, SysUtils;
+ Dialogs, uDataTableUtils, SysUtils;
{ TBizInventario }
+procedure TBizInventario.AfterOpen(Sender: TDADataTable);
+var
+ Contador: Integer;
+begin
+ inherited;
+ DesconectarTabla(Sender);
+ Sender.First;
+ Contador := 1;
+ while not Sender.EOF do
+ begin
+ if not Sender.Editing then
+ Sender.Edit;
+ Sender.FieldByName('ID').AsInteger := Contador;
+ Inc(Contador);
+ Sender.Next;
+ end;
+ ConectarTabla(Sender);
+
+
+//
+end;
+
+procedure TBizInventario.BeforeOpen(Sender: TDADataTable);
+begin
+ inherited;
+//
+end;
+
constructor TBizInventario.Create(aDataTable: TDADataTable);
begin
inherited;
diff --git a/Source/Modulos/Inventario/Plugin/uPluginInventario.dfm b/Source/Modulos/Inventario/Plugin/uPluginInventario.dfm
index cbf19ee5..e6b5662e 100644
--- a/Source/Modulos/Inventario/Plugin/uPluginInventario.dfm
+++ b/Source/Modulos/Inventario/Plugin/uPluginInventario.dfm
@@ -1,6 +1,6 @@
object PluginInventario: TPluginInventario
OldCreateOrder = True
- DefaultAction = actInventario
+ DefaultAction = actInventarioAlmacenes
Description = 'Ventas'
ModuleMenu = MainMenu
ModuleName = 'Articulos'
@@ -38,6 +38,125 @@ object PluginInventario: TPluginInventario
49454E44AE426082}
Name = 'PngImage0'
Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD25200000A4F694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53675453E9163DF7
+ DEF4424B8880944B6F5215082052428B801491262A2109104A8821A1D91551C1
+ 114545041BC8A088038E8E808C15512C0C8A0AD807E421A28E83A3888ACAFBE1
+ 7BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C0080C9648335135800CA9421E
+ 11E083C7C4C6E1E42E40810A2470001008B3642173FD230100F87E3C3C2B22C0
+ 07BE000178D30B0800C04D9BC0301C87FF0FEA42995C01808401C07491384B08
+ 801400407A8E42A600404601809D98265300A0040060CB6362E300502D006027
+ 7FE6D300809DF8997B01005B94211501A09100201365884400683B00ACCF568A
+ 450058300014664BC43900D82D00304957664800B0B700C0CE100BB200080C00
+ 305188852900047B0060C8232378008499001446F2573CF12BAE10E72A000078
+ 99B23CB9243945815B082D710757572E1E28CE49172B14366102619A402EC279
+ 99193281340FE0F3CC0000A0911511E083F3FD78CE0EAECECE368EB60E5F2DEA
+ BF06FF226262E3FEE5CFAB70400000E1747ED1FE2C2FB31A803B06806DFEA225
+ EE04685E0BA075F78B66B20F40B500A0E9DA57F370F87E3C3C45A190B9D9D9E5
+ E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E3CFCF7F5E0BEE22481325D
+ 814704F8E0C2CCF44CA51CCF92098462DCE68F47FCB70BFFFC1DD322C44962B9
+ 582A14E35112718E449A8CF332A52289429229C525D2FF64E2DF2CFB033EDF35
+ 00B06A3E017B912DA85D6303F64B27105874C0E2F70000F2BB6FC1D428080380
+ 6883E1CF77FFEF3FFD47A02500806649927100005E44242E54CAB33FC7080000
+ 44A0812AB0411BF4C1182CC0061CC105DCC10BFC6036844224C4C24210420A64
+ 801C726029AC82422886CDB01D2A602FD4401D34C051688693700E2EC255B80E
+ 3D700FFA61089EC128BC81090441C808136121DA8801628A58238E08179985F8
+ 21C14804128B2420C9881451224B91354831528A542055481DF23D720239875C
+ 46BA913BC8003282FC86BC47319481B2513DD40CB543B9A8371A8446A20BD064
+ 74319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA8F3E43C730C0E8180733C4
+ 6C302EC6C342B1382C099363CBB122AC0CABC61AB056AC03BB89F563CFB17704
+ 128145C0093604774220611E4148584C584ED848A8201C243411DA0937090384
+ 51C2272293A84BB426BA11F9C4186232318758482C23D6128F132F107B8843C4
+ 37241289433227B9900249B1A454D212D246D26E5223E92CA99B34481A2393C9
+ DA646BB20739942C202BC885E49DE4C3E433E41BE421F25B0A9D624071A4F853
+ E22852CA6A4A19E510E534E5066598324155A39A52DDA8A15411358F5A42ADA1
+ B652AF5187A81334759A39CD8316494BA5ADA295D31A681768F769AFE874BA11
+ DD951E4E97D057D2CBE947E897E803F4770C0D861583C7886728199B18071867
+ 197718AF984CA619D38B19C754303731EB98E7990F996F55582AB62A7C1591CA
+ 0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB548FA95E537DAE46553353
+ E3A909D496AB55AA9D50EB531B5367A93BA887AA67A86F543FA47E59FD890659
+ C34CC34F43A451A0B15FE3BCC6200B6319B3782C216B0DAB86758135C426B1CD
+ D97C762ABB98FD1DBB8B3DAAA9A13943334A3357B352F394663F07E39871F89C
+ 744E09E728A797F37E8ADE14EF29E2291BA6344CB931655C6BAA96979658AB48
+ AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C74A275C2747678FCE059DE7
+ 53D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB4477BF6EA7EE989EBE5E809E
+ 4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C5806B30C2406DB0CCE183CC5
+ 35716F3C1D2FC7DBF151435DC34043A561956197E18491B9D13CA3D5468D460F
+ 8C69C65CE324E36DC66DC6A326062621264B4DEA4DEE9A524DB9A629A63B4C3B
+ 4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79BDFB7605A785A2CB6A8B6B8
+ 6549B2E45AA659EEB6BC6E855A3959A558555A5DB346AD9DAD25D6BBADBBA711
+ A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D806DBAEB66DB67D61676217
+ 67B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB1D5A1D7E73B472143A563A
+ DE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B613CB29C4699D539BD34767
+ 1767B97383F3888B894B82CB2E973E2E9B1BC6DDC8BDE44A74F5715DE17AD2F5
+ 9D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F299E593373D0C3C843E051E5
+ D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F9157ADD7B0B7A577AAF761
+ EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7C8B7CB4FC36F9E5F85DF43
+ 7F23FF64FF7AFFD100A78025016703898141815B02FBF87A7C21BF8E3F3ADB65
+ F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8EC90AD21F7E798CE91CE69
+ 0E85507EE8D6D00761E6618BC37E0C2785878557863F8E7088581AD131973577
+ D1DC4373DF44FA449644DE9B67314F39AF2D4A352A3EAA2E6A3CDA37BA34BA3F
+ C62E6659CCD5589D58496C4B1C392E2AAE366E6CBEDFFCEDF387E29DE20BE37B
+ 17982FC85D7079A1CEC2F485A716A92E122C3A96404C884E3894F041102AA816
+ 8C25F21377258E0A79C21DC267222FD136D188D8435C2A1E4EF2482A4D7A92EC
+ 91BC357924C533A52CE5B98427A990BC4C0D4CDD9B3A9E169A76206D323D3ABD
+ 31839291907142AA214D93B667EA67E66676CBAC6585B2FEC56E8BB72F1E9507
+ C96BB390AC05592D0AB642A6E8545A28D72A07B267655766BFCD89CA3996AB9E
+ 2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5864B572D1D58E6BDAC6A39
+ B23C7179DB0AE315052B865606AC3CB88AB62A6DD54FABED5797AE7EBD267A4D
+ 6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED5D4F582F59DFB561FA869D
+ 1B3E15898AAE14DB1797157FD828DC78E51B876FCABF99DC94B4A9ABC4B964CF
+ 66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB40DDF56B4EDF5F645DB2F97
+ CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54A454F454FA5436EED2DDB5
+ 61D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BEDB5501554DD566D565FB49
+ FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D203FD07230EB6D7B9D4D51D
+ D23D54528FD62BEB470EC71FBEFE9DEF772D0D360D558D9CC6E223704479E4E9
+ F709DFF71E0D3ADA768C7BACE107D31F761D671D2F6A429AF29A469B539AFB5B
+ 625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C59794AF354C969DAE982D39367
+ F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A0F6FEFBA1074E1D245FF8B
+ E73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F6DEA74EA3CFE93D34FC7BB
+ 9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDDF4BD79F116FFD6D59E393D
+ DDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD97727EEADBC4FBC5FF440ED41
+ D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47F7068583CFFE91F58F0F43
+ 058F998FCB860D86EB9E383E3939E23F72FDE9FCA743CF64CF269E17FEA2FECB
+ AE17162F7EF8D5EBD7CED198D1A197F29793BF6D7CA5FDEAC0EB19AFDBC6C2C6
+ 1EBEC97833315EF456FBEDC177DC771DEFA3DF0F4FE47C207F28FF68F9B1F553
+ D0A7FB93199393FF040398F3FC63332DDB0000037E4944415478DAB5956B4814
+ 5114C7FFB36EEEBABDD436B7759932821E3ECAB0A2829028E8F165890AFC9298
+ 211551585F2C30CAB23765D1CB4F69D193D4D42CCD945EE6AED96E62BA695204
+ 5AF6D834132D9D999DEE9DD8A1CB6EB6411DB8730E9C73FFBF33F70C77385996
+ F13F8DA3006EDBF34924CE1C69D0A7FC0BD1DEFEEFF9C4652367FA2B2F202F8E
+ 0F4B090E31FCB5D8FA8410D8DA25CCE383149F7B7F017274566C9756E613C05A
+ 05109BF144760DE8FEE9D14C7CD388D725C99C0AF8D6DAEAB7D0B523598D2FBB
+ CEA9717689169956D1EF1E9AA3C6009A0ECDF15B3C50C74117A3C7F9C25C58AD
+ 56489204A7D3898E8E0E582C16444F9B0283C1408629C0E391D1D53B889A87F7
+ 15C85F01F2AE9F41626222445144555515789E87DBED865EAF476CF454E88339
+ 683480461B02FA613E78548BD4D4D4C0013BF6A5232D2D0D76BB1D3D3D3DE8EC
+ EC84FBB31B13A2A2305CAF832C0D82D370883099611A3B16A1A343E17AF90A01
+ 03D66C5A8D654B96C2E170A0BBE70BFAFBFAA0D56A214822BABF74210832A441
+ 01D3E2E2C19BCD88248BD30E0B1C80AE79D89A138B6164535070309658D729F9
+ A6BA5B88B4F078F7B61D2DAD6D58959C8E83599BB160EE7C841B8D8101A8E9CC
+ 0B814FF73050B014B61527113739920CDC832B9923D5DAE3D531A8B8730FF667
+ 2DA8ADBC88F819F17F06783C8050FF138262565C24EBFAAED1D890928286867C
+ 241D8D41D9ED6A027881FD97DAB1785CCDD000AFB8F7887E7D83C951110AA468
+ 4F180328B97917B6672E1CBEFA6EE8CF948A4BE4E17104299DFF6A143089372A
+ F992EC310CA0A8F80E6A9DCD3856F0E1F700AF383D02A5CBC2C788881887C7B6
+ 462C5A9EA08A8B928C5B078C0CE05AC16D7244CD3871C3ED1FE0151F1424459C
+ AE9BA5760630DE1CAE365079C4C4002E5D2B2380269C2EEDF605D08EBCC3F38A
+ 8B44A8BCEC0903B09842D59AEA63660670E17229EA1B5DBE8086FDB3FD8A535F
+ 59FE9401988CA3D4DA07272C0C20EF62319C4D2DBE00C7DE04BFE24A97954E06
+ 600C1BA1D6D69CE20303D4ED9EE9575CE9B2BA8101848E32A879DBD90981016A
+ 77CE80D3D5AE0C9A0E50104432680102B93DFB3E7C55015131260295C8AD2A29
+ 57B76C5FCE00366F3FA868F8007EF7C3518A37CE52FCC78FEF9155D8C1E4B698
+ 931980263A43CDA9008EE330949557B864DA3DB5ECAC24A6F8F806C873E37FC6
+ 14F0A6AD99C90704F8935108F5E9B9F011FA01A02CD0CAC3EA09BB0000000049
+ 454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
end>
Left = 232
Top = 16
@@ -47,11 +166,17 @@ object PluginInventario: TPluginInventario
Images = LargeImages
Left = 40
Top = 72
- object actInventario: TAction
+ object actInventarioAlmacenes: TAction
Category = 'Log'#237'stica'
- Caption = 'Inventario'
+ Caption = 'Inventario almacenes'
ImageIndex = 0
- OnExecute = actInventarioExecute
+ OnExecute = actInventarioAlmacenesExecute
+ end
+ object actInventarioObras: TAction
+ Category = 'Log'#237'stica'
+ Caption = 'Inventario obras'
+ ImageIndex = 1
+ OnExecute = actInventarioObrasExecute
end
end
object MainMenu: TMainMenu
@@ -62,7 +187,11 @@ object PluginInventario: TPluginInventario
Caption = 'Log'#237'stica'
object Inventario1: TMenuItem
Tag = 201
- Action = actInventario
+ Action = actInventarioAlmacenes
+ end
+ object Inventarioobras1: TMenuItem
+ Tag = 202
+ Action = actInventarioObras
end
end
end
@@ -86,6 +215,114 @@ object PluginInventario: TPluginInventario
972843D0010013390BFAA171B8130000000049454E44AE426082}
Name = 'PngImage0'
Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD25200000A4F694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53675453E9163DF7
+ DEF4424B8880944B6F5215082052428B801491262A2109104A8821A1D91551C1
+ 114545041BC8A088038E8E808C15512C0C8A0AD807E421A28E83A3888ACAFBE1
+ 7BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C0080C9648335135800CA9421E
+ 11E083C7C4C6E1E42E40810A2470001008B3642173FD230100F87E3C3C2B22C0
+ 07BE000178D30B0800C04D9BC0301C87FF0FEA42995C01808401C07491384B08
+ 801400407A8E42A600404601809D98265300A0040060CB6362E300502D006027
+ 7FE6D300809DF8997B01005B94211501A09100201365884400683B00ACCF568A
+ 450058300014664BC43900D82D00304957664800B0B700C0CE100BB200080C00
+ 305188852900047B0060C8232378008499001446F2573CF12BAE10E72A000078
+ 99B23CB9243945815B082D710757572E1E28CE49172B14366102619A402EC279
+ 99193281340FE0F3CC0000A0911511E083F3FD78CE0EAECECE368EB60E5F2DEA
+ BF06FF226262E3FEE5CFAB70400000E1747ED1FE2C2FB31A803B06806DFEA225
+ EE04685E0BA075F78B66B20F40B500A0E9DA57F370F87E3C3C45A190B9D9D9E5
+ E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E3CFCF7F5E0BEE22481325D
+ 814704F8E0C2CCF44CA51CCF92098462DCE68F47FCB70BFFFC1DD322C44962B9
+ 582A14E35112718E449A8CF332A52289429229C525D2FF64E2DF2CFB033EDF35
+ 00B06A3E017B912DA85D6303F64B27105874C0E2F70000F2BB6FC1D428080380
+ 6883E1CF77FFEF3FFD47A02500806649927100005E44242E54CAB33FC7080000
+ 44A0812AB0411BF4C1182CC0061CC105DCC10BFC6036844224C4C24210420A64
+ 801C726029AC82422886CDB01D2A602FD4401D34C051688693700E2EC255B80E
+ 3D700FFA61089EC128BC81090441C808136121DA8801628A58238E08179985F8
+ 21C14804128B2420C9881451224B91354831528A542055481DF23D720239875C
+ 46BA913BC8003282FC86BC47319481B2513DD40CB543B9A8371A8446A20BD064
+ 74319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA8F3E43C730C0E8180733C4
+ 6C302EC6C342B1382C099363CBB122AC0CABC61AB056AC03BB89F563CFB17704
+ 128145C0093604774220611E4148584C584ED848A8201C243411DA0937090384
+ 51C2272293A84BB426BA11F9C4186232318758482C23D6128F132F107B8843C4
+ 37241289433227B9900249B1A454D212D246D26E5223E92CA99B34481A2393C9
+ DA646BB20739942C202BC885E49DE4C3E433E41BE421F25B0A9D624071A4F853
+ E22852CA6A4A19E510E534E5066598324155A39A52DDA8A15411358F5A42ADA1
+ B652AF5187A81334759A39CD8316494BA5ADA295D31A681768F769AFE874BA11
+ DD951E4E97D057D2CBE947E897E803F4770C0D861583C7886728199B18071867
+ 197718AF984CA619D38B19C754303731EB98E7990F996F55582AB62A7C1591CA
+ 0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB548FA95E537DAE46553353
+ E3A909D496AB55AA9D50EB531B5367A93BA887AA67A86F543FA47E59FD890659
+ C34CC34F43A451A0B15FE3BCC6200B6319B3782C216B0DAB86758135C426B1CD
+ D97C762ABB98FD1DBB8B3DAAA9A13943334A3357B352F394663F07E39871F89C
+ 744E09E728A797F37E8ADE14EF29E2291BA6344CB931655C6BAA96979658AB48
+ AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C74A275C2747678FCE059DE7
+ 53D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB4477BF6EA7EE989EBE5E809E
+ 4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C5806B30C2406DB0CCE183CC5
+ 35716F3C1D2FC7DBF151435DC34043A561956197E18491B9D13CA3D5468D460F
+ 8C69C65CE324E36DC66DC6A326062621264B4DEA4DEE9A524DB9A629A63B4C3B
+ 4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79BDFB7605A785A2CB6A8B6B8
+ 6549B2E45AA659EEB6BC6E855A3959A558555A5DB346AD9DAD25D6BBADBBA711
+ A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D806DBAEB66DB67D61676217
+ 67B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB1D5A1D7E73B472143A563A
+ DE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B613CB29C4699D539BD34767
+ 1767B97383F3888B894B82CB2E973E2E9B1BC6DDC8BDE44A74F5715DE17AD2F5
+ 9D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F299E593373D0C3C843E051E5
+ D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F9157ADD7B0B7A577AAF761
+ EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7C8B7CB4FC36F9E5F85DF43
+ 7F23FF64FF7AFFD100A78025016703898141815B02FBF87A7C21BF8E3F3ADB65
+ F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8EC90AD21F7E798CE91CE69
+ 0E85507EE8D6D00761E6618BC37E0C2785878557863F8E7088581AD131973577
+ D1DC4373DF44FA449644DE9B67314F39AF2D4A352A3EAA2E6A3CDA37BA34BA3F
+ C62E6659CCD5589D58496C4B1C392E2AAE366E6CBEDFFCEDF387E29DE20BE37B
+ 17982FC85D7079A1CEC2F485A716A92E122C3A96404C884E3894F041102AA816
+ 8C25F21377258E0A79C21DC267222FD136D188D8435C2A1E4EF2482A4D7A92EC
+ 91BC357924C533A52CE5B98427A990BC4C0D4CDD9B3A9E169A76206D323D3ABD
+ 31839291907142AA214D93B667EA67E66676CBAC6585B2FEC56E8BB72F1E9507
+ C96BB390AC05592D0AB642A6E8545A28D72A07B267655766BFCD89CA3996AB9E
+ 2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5864B572D1D58E6BDAC6A39
+ B23C7179DB0AE315052B865606AC3CB88AB62A6DD54FABED5797AE7EBD267A4D
+ 6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED5D4F582F59DFB561FA869D
+ 1B3E15898AAE14DB1797157FD828DC78E51B876FCABF99DC94B4A9ABC4B964CF
+ 66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB40DDF56B4EDF5F645DB2F97
+ CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54A454F454FA5436EED2DDB5
+ 61D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BEDB5501554DD566D565FB49
+ FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D203FD07230EB6D7B9D4D51D
+ D23D54528FD62BEB470EC71FBEFE9DEF772D0D360D558D9CC6E223704479E4E9
+ F709DFF71E0D3ADA768C7BACE107D31F761D671D2F6A429AF29A469B539AFB5B
+ 625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C59794AF354C969DAE982D39367
+ F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A0F6FEFBA1074E1D245FF8B
+ E73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F6DEA74EA3CFE93D34FC7BB
+ 9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDDF4BD79F116FFD6D59E393D
+ DDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD97727EEADBC4FBC5FF440ED41
+ D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47F7068583CFFE91F58F0F43
+ 058F998FCB860D86EB9E383E3939E23F72FDE9FCA743CF64CF269E17FEA2FECB
+ AE17162F7EF8D5EBD7CED198D1A197F29793BF6D7CA5FDEAC0EB19AFDBC6C2C6
+ 1EBEC97833315EF456FBEDC177DC771DEFA3DF0F4FE47C207F28FF68F9B1F553
+ D0A7FB93199393FF040398F3FC63332DDB0000021C4944415478DAA5D35F4853
+ 511C07F0EF316E2B9415697FAC07B382C8FE80084151180441113DD98B0F8938
+ 154B0A6C0F850A428E15ACAD62222B7C0C8A0A378649890F1258CBB659C32D73
+ 73AEF46EDC6E8A989BD7DD3F79AFECE665348A7E703887C3F97ECE39700E9124
+ 09FF534406484B606FD1E26CF85FC36CFE967D0AB0B571482A293FFCC7858D15
+ 1BE1F0A6D47E38781AC7CB0611F307A002D4171FA2B75BD450E90D2B8EEE1170
+ A898C3149BC6EE224A837A26458CC50B7E03DF1D95E03C04BA831BC0994E4167
+ EE475B9B0946E315582C5DD0EB2918EA6A55C06A7B88B7612E3760329BB130BF
+ 80197A1AC9541282C083883CB6EF2846537D3D9EF50EE406128904ECF61E545D
+ BC006189C5C0F37B601806573B9DB0DCEFC24F36921B104509CB6961A5F1087A
+ 7A41C2D578E42AC0F5079FE10F4561EB7EA105E4E26E9E05657AA98C33E1D452
+ 1AE31F9CD0C52EA1DBA9C7B5BB9F108A7C83D13A927D82BCB1FD10274AC1B7BB
+ 94700699F0B9913F5DA3004D777C88C4E2D9805CED1D4FD1DC7C0EEBA9756A78
+ 991711F1BBB1295EAB0086CE117CA599DCC0EA1556C3695EC0E4A81B858C4101
+ 6A3ADE21CEFCD002B4FD04A8955D33C0DAB03C8E7DECC3B6D90605A86E1D063B
+ 37A705A66CC7E01A7C8F907706072A76653D673AF81A2737DF52803397FB9439
+ 0D203F65B9EA2A77A26788CE024AA800ACE7DFC0D1CFE055B215248F5AF31B09
+ F9ABDFF7B8AA4C5A8C1E4183F7891AF8058C8F6E7D811958CE0000000049454E
+ 44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
end>
PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
Left = 308
@@ -126,6 +363,134 @@ object PluginInventario: TPluginInventario
000049454E44AE426082}
Name = 'PngImage0'
Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF
+ 940000000970485973000017120000171201679FD25200000A4F694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53675453E9163DF7
+ DEF4424B8880944B6F5215082052428B801491262A2109104A8821A1D91551C1
+ 114545041BC8A088038E8E808C15512C0C8A0AD807E421A28E83A3888ACAFBE1
+ 7BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C0080C9648335135800CA9421E
+ 11E083C7C4C6E1E42E40810A2470001008B3642173FD230100F87E3C3C2B22C0
+ 07BE000178D30B0800C04D9BC0301C87FF0FEA42995C01808401C07491384B08
+ 801400407A8E42A600404601809D98265300A0040060CB6362E300502D006027
+ 7FE6D300809DF8997B01005B94211501A09100201365884400683B00ACCF568A
+ 450058300014664BC43900D82D00304957664800B0B700C0CE100BB200080C00
+ 305188852900047B0060C8232378008499001446F2573CF12BAE10E72A000078
+ 99B23CB9243945815B082D710757572E1E28CE49172B14366102619A402EC279
+ 99193281340FE0F3CC0000A0911511E083F3FD78CE0EAECECE368EB60E5F2DEA
+ BF06FF226262E3FEE5CFAB70400000E1747ED1FE2C2FB31A803B06806DFEA225
+ EE04685E0BA075F78B66B20F40B500A0E9DA57F370F87E3C3C45A190B9D9D9E5
+ E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E3CFCF7F5E0BEE22481325D
+ 814704F8E0C2CCF44CA51CCF92098462DCE68F47FCB70BFFFC1DD322C44962B9
+ 582A14E35112718E449A8CF332A52289429229C525D2FF64E2DF2CFB033EDF35
+ 00B06A3E017B912DA85D6303F64B27105874C0E2F70000F2BB6FC1D428080380
+ 6883E1CF77FFEF3FFD47A02500806649927100005E44242E54CAB33FC7080000
+ 44A0812AB0411BF4C1182CC0061CC105DCC10BFC6036844224C4C24210420A64
+ 801C726029AC82422886CDB01D2A602FD4401D34C051688693700E2EC255B80E
+ 3D700FFA61089EC128BC81090441C808136121DA8801628A58238E08179985F8
+ 21C14804128B2420C9881451224B91354831528A542055481DF23D720239875C
+ 46BA913BC8003282FC86BC47319481B2513DD40CB543B9A8371A8446A20BD064
+ 74319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA8F3E43C730C0E8180733C4
+ 6C302EC6C342B1382C099363CBB122AC0CABC61AB056AC03BB89F563CFB17704
+ 128145C0093604774220611E4148584C584ED848A8201C243411DA0937090384
+ 51C2272293A84BB426BA11F9C4186232318758482C23D6128F132F107B8843C4
+ 37241289433227B9900249B1A454D212D246D26E5223E92CA99B34481A2393C9
+ DA646BB20739942C202BC885E49DE4C3E433E41BE421F25B0A9D624071A4F853
+ E22852CA6A4A19E510E534E5066598324155A39A52DDA8A15411358F5A42ADA1
+ B652AF5187A81334759A39CD8316494BA5ADA295D31A681768F769AFE874BA11
+ DD951E4E97D057D2CBE947E897E803F4770C0D861583C7886728199B18071867
+ 197718AF984CA619D38B19C754303731EB98E7990F996F55582AB62A7C1591CA
+ 0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB548FA95E537DAE46553353
+ E3A909D496AB55AA9D50EB531B5367A93BA887AA67A86F543FA47E59FD890659
+ C34CC34F43A451A0B15FE3BCC6200B6319B3782C216B0DAB86758135C426B1CD
+ D97C762ABB98FD1DBB8B3DAAA9A13943334A3357B352F394663F07E39871F89C
+ 744E09E728A797F37E8ADE14EF29E2291BA6344CB931655C6BAA96979658AB48
+ AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C74A275C2747678FCE059DE7
+ 53D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB4477BF6EA7EE989EBE5E809E
+ 4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C5806B30C2406DB0CCE183CC5
+ 35716F3C1D2FC7DBF151435DC34043A561956197E18491B9D13CA3D5468D460F
+ 8C69C65CE324E36DC66DC6A326062621264B4DEA4DEE9A524DB9A629A63B4C3B
+ 4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79BDFB7605A785A2CB6A8B6B8
+ 6549B2E45AA659EEB6BC6E855A3959A558555A5DB346AD9DAD25D6BBADBBA711
+ A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D806DBAEB66DB67D61676217
+ 67B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB1D5A1D7E73B472143A563A
+ DE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B613CB29C4699D539BD34767
+ 1767B97383F3888B894B82CB2E973E2E9B1BC6DDC8BDE44A74F5715DE17AD2F5
+ 9D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F299E593373D0C3C843E051E5
+ D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F9157ADD7B0B7A577AAF761
+ EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7C8B7CB4FC36F9E5F85DF43
+ 7F23FF64FF7AFFD100A78025016703898141815B02FBF87A7C21BF8E3F3ADB65
+ F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8EC90AD21F7E798CE91CE69
+ 0E85507EE8D6D00761E6618BC37E0C2785878557863F8E7088581AD131973577
+ D1DC4373DF44FA449644DE9B67314F39AF2D4A352A3EAA2E6A3CDA37BA34BA3F
+ C62E6659CCD5589D58496C4B1C392E2AAE366E6CBEDFFCEDF387E29DE20BE37B
+ 17982FC85D7079A1CEC2F485A716A92E122C3A96404C884E3894F041102AA816
+ 8C25F21377258E0A79C21DC267222FD136D188D8435C2A1E4EF2482A4D7A92EC
+ 91BC357924C533A52CE5B98427A990BC4C0D4CDD9B3A9E169A76206D323D3ABD
+ 31839291907142AA214D93B667EA67E66676CBAC6585B2FEC56E8BB72F1E9507
+ C96BB390AC05592D0AB642A6E8545A28D72A07B267655766BFCD89CA3996AB9E
+ 2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5864B572D1D58E6BDAC6A39
+ B23C7179DB0AE315052B865606AC3CB88AB62A6DD54FABED5797AE7EBD267A4D
+ 6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED5D4F582F59DFB561FA869D
+ 1B3E15898AAE14DB1797157FD828DC78E51B876FCABF99DC94B4A9ABC4B964CF
+ 66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB40DDF56B4EDF5F645DB2F97
+ CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54A454F454FA5436EED2DDB5
+ 61D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BEDB5501554DD566D565FB49
+ FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D203FD07230EB6D7B9D4D51D
+ D23D54528FD62BEB470EC71FBEFE9DEF772D0D360D558D9CC6E223704479E4E9
+ F709DFF71E0D3ADA768C7BACE107D31F761D671D2F6A429AF29A469B539AFB5B
+ 625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C59794AF354C969DAE982D39367
+ F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A0F6FEFBA1074E1D245FF8B
+ E73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F6DEA74EA3CFE93D34FC7BB
+ 9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDDF4BD79F116FFD6D59E393D
+ DDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD97727EEADBC4FBC5FF440ED41
+ D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47F7068583CFFE91F58F0F43
+ 058F998FCB860D86EB9E383E3939E23F72FDE9FCA743CF64CF269E17FEA2FECB
+ AE17162F7EF8D5EBD7CED198D1A197F29793BF6D7CA5FDEAC0EB19AFDBC6C2C6
+ 1EBEC97833315EF456FBEDC177DC771DEFA3DF0F4FE47C207F28FF68F9B1F553
+ D0A7FB93199393FF040398F3FC63332DDB000004B04944415478DABDD67B4C53
+ 571C07F06FA13C04078C7729B025FE3343E24CF6401797CD2D4360C07C2C716E
+ 411424D3315444C76002C2D01133064A1C18916A79D95943794D60328A2F3694
+ 97E29430E312B7964769850D37E8E3ECDE164EB94241B2E92FB93DE7DE73FAFB
+ DCF33BF726974708C1D30C1E0BF2783C58EDEE2606A67D6291BBCC64B13FD609
+ 374880BFEB7FCA17BFCA0D925B5A0C6A4639FDEBF7C2D1A9B1C23B4E85183DF6
+ 0ACF08F2B73512FDB8D672366261E53CF376A447BD85EA1E0D3ADB3B39FD1EC1
+ 0914FDF512F22702A12B0A32839E776F3DB9723231B824C00CBAC65F23BD194B
+ 1FEB8F47BE3942FBBBF6ECE29C3F1AECF8542C49BD6D2EA9DBCEEB64F8E8CBC6
+ 81F19F6796CF2ED054BAFDFB0F62EFDE38E8F57A747474A0A1A10A41411110FA
+ 78C3D9D9190E0E0E4C95B5301808D47F4EE078410E9252B221A9BB8CB446E65A
+ 49C8ECA05D803DA05E090C35635C1A0CBBAFCE53303A7A13743A1DC4E2B3080C
+ 5C06954A057B7B7BF83FE70F274707D8DB324FBC1560C55F04F68DFBB6301FCF
+ BF1886B40603D4A5A10B03939393111B1B8BE2E20A0885AE502A95500DAB98D5
+ B9C0E5591738DADB81E827C0B3E2C1D34B002F0F0FB8306325156214F78730E0
+ BB0B0323A33623644D30DADBDBA1197980876363E0F3F9D0EA75D03C50C31A04
+ FA092D5C5CDD2110FAC24F20800F737474B7A158190C7559D8C24036121276C2
+ 866F036B5B5BA4A5651AF74B5454001FA11F147FDCC79DDE3E7C917E88D96703
+ B6C56CC2EB2B5E636E6E00C58A355097872F1CD41B0C4C32626C598C4D2CDAB7
+ 88F3906D48D7D0F1ECAC143CB3D80622451086CB234CA07B7C1B51E5BF3A2F38
+ 1BC6F6C5498ED8BE650BBABA4EE1839C00C8E5174DE3CCA1D5E99177380DD291
+ 500C57BC3709C6B512D5B1956690CF743C5673404B187BAD2C653107BCD024A7
+ 73D979F29FBA915EF70F86CFAC35811E3B2E93A18255B424F45D94CD8EB1773D
+ 1D95A43A73C086C6668AB1C7A56B37915EFB378625EB26C18F5BC8D0F1372C96
+ 14193573AE507AC085037E5FDF4431B6AC57DB7B18F02103AE37819EB1723278
+ E24DF3EA98954D0F7D7A95458C6D2B335D39604DDD0F14D3316D5BD72F385033
+ 06D5771B26C198263278F26D0A884B9AE1E9E98D2BAD3790FCF9BA3931F65A55
+ 961B07945537508C9DDF7EF30E53A4310C4D815E5B1BC98028C8881998F3D252
+ 39053FDBB7764E8C6D6B0F7970C073B27AE33E4F95B5FB761F326423183AB771
+ 128CAA2703A7838D189BA4BCBC858289891173625A9D010D87BD38E019691D67
+ 0F7B7A7F45A6740883559126D03BB28E28C4A134B1447289820909E114D3E90C
+ D33073C92EE408386099A486626CB0E0971225066AB74E821F5593DFC56134B1
+ F4EC150A7E1A1FCA59E1A3187BAD3957C801C5E555149B02B3CAEFA3FF7CAC09
+ F4F9B092DC1585D1C4B2CA560A7E12173227C6B6178FFA714051A98CF3941BC1
+ 927BE86FDC61027DD79790DEB28D10497FA4939C6087518C3FD65780FE6A0807
+ 4C4CFD7AC69C83A7FAA06C8A378182D5B9A4DFC99D0E9E7EDF97AE30AB73625E
+ 30CF673307FC6D69D28C3982511514CD09932565C0E983D9D1CB2978B245312F
+ 98F4C21EAC586EEAB3E0B83066D67914E4FD0F1FC079DB61BCE9DD85B0988C7E
+ 083FCDF817B51A2205660D9F400000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
end>
Left = 232
Top = 80
diff --git a/Source/Modulos/Inventario/Plugin/uPluginInventario.pas b/Source/Modulos/Inventario/Plugin/uPluginInventario.pas
index 6109c92c..8ff11c41 100644
--- a/Source/Modulos/Inventario/Plugin/uPluginInventario.pas
+++ b/Source/Modulos/Inventario/Plugin/uPluginInventario.pas
@@ -12,7 +12,7 @@ type
end;
TPluginInventario = class(TModuleController, IMCInventario)
- actInventario: TAction;
+ actInventarioAlmacenes: TAction;
ExtraImages: TPngImageList;
LargeImages: TPngImageList;
MainMenu: TMainMenu;
@@ -20,7 +20,10 @@ type
SmallImages: TPngImageList;
Logstica1: TMenuItem;
Inventario1: TMenuItem;
- procedure actInventarioExecute(Sender: TObject);
+ actInventarioObras: TAction;
+ Inventarioobras1: TMenuItem;
+ procedure actInventarioAlmacenesExecute(Sender: TObject);
+ procedure actInventarioObrasExecute(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -42,15 +45,26 @@ end;
exports
GetModule name GET_MODULE_FUNC;
-procedure TPluginInventario.actInventarioExecute(Sender: TObject);
+procedure TPluginInventario.actInventarioAlmacenesExecute(Sender: TObject);
var
AInventarioController : IInventarioController;
AInventario : IBizInventario;
begin
AInventarioController := TInventarioController.Create;
- AInventario := (AInventarioController.BuscarTodos as IBizInventario);
- AInventarioController.VerTodos(AInventario);
+ AInventario := (AInventarioController.BuscarTodosAlmacenes as IBizInventario);
+ AInventarioController.VerTodos(AInventario, CTE_INV_ALMACEN);
+end;
+
+procedure TPluginInventario.actInventarioObrasExecute(Sender: TObject);
+var
+ AInventarioController : IInventarioController;
+ AInventario : IBizInventario;
+
+begin
+ AInventarioController := TInventarioController.Create;
+ AInventario := (AInventarioController.BuscarTodosObras as IBizInventario);
+ AInventarioController.VerTodos(AInventario, CTE_INV_OBRA);
end;
constructor TPluginInventario.Create(AOwner: TComponent);
diff --git a/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm b/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
index 529d9398..6525665b 100644
--- a/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
+++ b/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
@@ -23,14 +23,14 @@ object srvInventario: TsrvInventario
'A, REFERENCIA, FAMILIA,'#10' DESCRIPCION,'#10'/* REFERENCIA_PROV a' +
's REFERENCIA_PROVEEDOR, PRECIO_NETO, COSTE_UNIDADES, SE ELIMINA' +
'N LOS PRECIOS CON HASTA SABER QUE DECISIONES SE TOMAN*/'#10' STOC' +
- 'K, UNIDADES_ALMACEN, RESERVA, PENDIENTE_RECEPCION,'#10' '#10' /*'#10' ' +
- ' NO BORRAR YA QUE SIRVE PARA LAS ENTRADAS Y SALIDAS DE ALMACEN' +
- '(TABLA MOVIMIENTOS)'#10' DEBERIA GENERAR UNA TABLA DE MOVIMIENTOS' +
- ' INDEPENDIENTE DEL INVENTARIO PERO POR FALTA'#10' DE TIEMPO Y FIA' +
- 'BILIDAD YA QUE AHORA FUNCIONA TODO, CREAMOS ESTOS CAMPOS FICTICI' +
- 'OS'#10' */'#10#10' 0 as ID, 0 as CANTIDAD, current_date as FECHA_MOV' +
- 'IMIENTO, NULL as CAUSA, NULL as TIPO'#10#10#10'FROM V_INVENTARIO'#10'where {' +
- 'where}'#10'ORDER BY ID_ARTICULO'#10
+ 'K, UNIDADES_ALMACEN, RESERVA, PENDIENTE_RECEPCION, TIPO_ALMACEN,' +
+ #10' '#10' /*'#10' NO BORRAR YA QUE SIRVE PARA LAS ENTRADAS Y SALI' +
+ 'DAS DE ALMACEN(TABLA MOVIMIENTOS)'#10' DEBERIA GENERAR UNA TABLA ' +
+ 'DE MOVIMIENTOS INDEPENDIENTE DEL INVENTARIO PERO POR FALTA'#10' D' +
+ 'E TIEMPO Y FIABILIDAD YA QUE AHORA FUNCIONA TODO, CREAMOS ESTOS ' +
+ 'CAMPOS FICTICIOS'#10' */'#10#10' 0 as ID, 0 as CANTIDAD, current_dat' +
+ 'e as FECHA_MOVIMIENTO, NULL as CAUSA, NULL as TIPO'#10#10#10'FROM V_INVE' +
+ 'NTARIO'#10'where {where}'#10'ORDER BY ID_ARTICULO'#10
StatementType = stSQL
ColumnMappings = <
item
@@ -49,6 +49,10 @@ object srvInventario: TsrvInventario
DatasetField = 'ID_EMPRESA'
TableField = 'ID_EMPRESA'
end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
item
DatasetField = 'FAMILIA'
TableField = 'FAMILIA'
@@ -61,6 +65,10 @@ object srvInventario: TsrvInventario
DatasetField = 'STOCK'
TableField = 'STOCK'
end
+ item
+ DatasetField = 'UNIDADES_ALMACEN'
+ TableField = 'UNIDADES_ALMACEN'
+ end
item
DatasetField = 'RESERVA'
TableField = 'RESERVA'
@@ -69,6 +77,10 @@ object srvInventario: TsrvInventario
DatasetField = 'PENDIENTE_RECEPCION'
TableField = 'PENDIENTE_RECEPCION'
end
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
item
DatasetField = 'CANTIDAD'
TableField = 'CANTIDAD'
@@ -86,12 +98,8 @@ object srvInventario: TsrvInventario
TableField = 'TIPO'
end
item
- DatasetField = 'REFERENCIA'
- TableField = 'REFERENCIA'
- end
- item
- DatasetField = 'UNIDADES_ALMACEN'
- TableField = 'UNIDADES_ALMACEN'
+ DatasetField = 'TIPO_ALMACEN'
+ TableField = 'TIPO_ALMACEN'
end>
end>
Name = 'Inventario'
@@ -155,12 +163,16 @@ object srvInventario: TsrvInventario
DataType = datLargeInt
DictionaryEntry = 'INVENTARIO_PENDIENTE_RECEPCION'
end
+ item
+ Name = 'TIPO_ALMACEN'
+ DataType = datString
+ Size = 10
+ end
item
Name = 'ID'
DataType = datInteger
DictionaryEntry = 'INVENTARIO_ID'
InPrimaryKey = True
- Calculated = True
end
item
Name = 'CANTIDAD'
diff --git a/Source/Modulos/Inventario/Views/Inventario_view.dpk b/Source/Modulos/Inventario/Views/Inventario_view.dpk
index 92ff94f4..fa19fd7d 100644
Binary files a/Source/Modulos/Inventario/Views/Inventario_view.dpk and b/Source/Modulos/Inventario/Views/Inventario_view.dpk differ
diff --git a/Source/Modulos/Inventario/Views/Inventario_view.dproj b/Source/Modulos/Inventario/Views/Inventario_view.dproj
index e9643bc1..c6dfc324 100644
--- a/Source/Modulos/Inventario/Views/Inventario_view.dproj
+++ b/Source/Modulos/Inventario/Views/Inventario_view.dproj
@@ -39,17 +39,18 @@
Delphi.Personality
Package
-FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Inventario_view.dpk
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Inventario_view.dpk
MainSource
-
-
-
-
+
+
+
+
+
TfEditorDetalleReservas
@@ -91,7 +92,7 @@