2007-08-01 16:16:26 +00:00
|
|
|
unit uDataModuleEDI_Inventary;
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
SysUtils, Classes, JvComponentBase, JvLogFile, uDAClasses,
|
|
|
|
|
uDABusinessProcessor, uDAScriptingProvider, uDADataTable, uDACDSDataTable,
|
|
|
|
|
uDataModuleServer, uBizEDIInventary, EDI_Reader, EDI_Inventary_Impl,
|
|
|
|
|
EDI_INVRPT, uDAInterfaces;
|
|
|
|
|
|
|
|
|
|
type
|
|
|
|
|
TdmEDIInventary = class(TDataModule)
|
|
|
|
|
schEDIInventary: TDASchema;
|
|
|
|
|
private
|
|
|
|
|
function InsertarCabecera(const ACabData : TEDIFileData; var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
function InsertarLineas(const ALinData : TEDIFileData; var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
function InsertarCantidades(const ACantData : TEDIFileData; var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
procedure InsertarLog(OK : Boolean; Error_msg : String = '');
|
2007-08-08 15:18:45 +00:00
|
|
|
function GenerarInventarioEDI: Boolean;
|
|
|
|
|
function MarcarRegistrosUltimoInventarioEDI: Boolean;
|
2007-08-01 16:16:26 +00:00
|
|
|
public
|
|
|
|
|
function CargarFicheros(const FicheroCAB: String; const FicheroLIN: String;
|
|
|
|
|
const FicheroCANT: String; var NumRegNuevos: Integer ): Boolean;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
var
|
|
|
|
|
dmEDIInventary: TdmEDIInventary;
|
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
Controls, Forms, uDataTableUtils, DB,
|
|
|
|
|
Dialogs, Variants, schEDIInventaryClient_Intf, EDI_Utils, EDI_Log_Impl,
|
|
|
|
|
VARELA_Intf;
|
|
|
|
|
|
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
|
|
|
|
{ TdmEDIInventary }
|
|
|
|
|
|
|
|
|
|
function TdmEDIInventary.CargarFicheros(const FicheroCAB, FicheroLIN,
|
|
|
|
|
FicheroCANT: String; var NumRegNuevos: Integer ): Boolean;
|
|
|
|
|
var
|
|
|
|
|
Cab_Reader : TCABINV_Reader;
|
|
|
|
|
Lin_Reader : TLININV_Reader;
|
|
|
|
|
Cant_Reader : TCANTINV_Reader;
|
|
|
|
|
|
|
|
|
|
NumRegNuevosCab : Integer;
|
|
|
|
|
NumRegNuevosLin : Integer;
|
|
|
|
|
NumRegNuevosCant : Integer;
|
|
|
|
|
begin
|
2007-08-08 15:18:45 +00:00
|
|
|
Result := True;
|
2007-08-01 16:16:26 +00:00
|
|
|
|
2007-08-08 15:18:45 +00:00
|
|
|
Cab_Reader := TCABINV_Reader.Create;
|
2007-08-01 16:16:26 +00:00
|
|
|
try
|
|
|
|
|
Cab_Reader.Filename := FicheroCAB;
|
|
|
|
|
Cab_Reader.ReadFile;
|
2007-08-08 15:18:45 +00:00
|
|
|
Result := InsertarCabecera (Cab_Reader.FileData, NumRegNuevosCab);
|
2007-08-01 16:16:26 +00:00
|
|
|
finally
|
|
|
|
|
FreeAndNIL(Cab_Reader);
|
|
|
|
|
end;
|
|
|
|
|
|
2007-08-08 15:18:45 +00:00
|
|
|
if Result then
|
|
|
|
|
begin
|
|
|
|
|
Lin_Reader := TLININV_Reader.Create;
|
|
|
|
|
try
|
|
|
|
|
Lin_Reader.Filename := FicheroLIN;
|
|
|
|
|
Lin_Reader.ReadFile;
|
|
|
|
|
Result := InsertarLineas (Lin_Reader.FileData, NumRegNuevosLin);
|
|
|
|
|
finally
|
|
|
|
|
FreeAndNIL(Lin_Reader);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
if Result then
|
|
|
|
|
begin
|
|
|
|
|
Cant_Reader := TCANTINV_Reader.Create;
|
|
|
|
|
try
|
|
|
|
|
Cant_Reader.Filename := FicheroCANT;
|
|
|
|
|
Cant_Reader.ReadFile;
|
|
|
|
|
Result := InsertarCantidades(Cant_Reader.FileData, NumRegNuevosCant);
|
|
|
|
|
finally
|
|
|
|
|
Cant_Reader.Free;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
2007-08-01 16:16:26 +00:00
|
|
|
end;
|
|
|
|
|
|
2007-08-08 15:18:45 +00:00
|
|
|
if Result then
|
|
|
|
|
begin
|
|
|
|
|
NumRegNuevos := NumRegNuevosCant;
|
|
|
|
|
Result := GenerarInventarioEDI;
|
|
|
|
|
if Result then
|
|
|
|
|
Result := MarcarRegistrosUltimoInventarioEDI;
|
2007-08-01 16:16:26 +00:00
|
|
|
end;
|
2007-08-08 15:18:45 +00:00
|
|
|
end;
|
2007-08-01 16:16:26 +00:00
|
|
|
|
2007-08-08 15:18:45 +00:00
|
|
|
function TdmEDIInventary.GenerarInventarioEDI: Boolean;
|
|
|
|
|
var
|
|
|
|
|
ACommand: IDASQLCommand;
|
|
|
|
|
AConnection : IDAConnection;
|
|
|
|
|
begin
|
|
|
|
|
Result := False;
|
|
|
|
|
AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
|
|
|
|
|
ACommand := schEDIInventary.NewCommand(AConnection, 'RDX_P_CARGAR_INVENTARIOEDI');
|
|
|
|
|
|
|
|
|
|
AConnection.BeginTransaction;
|
|
|
|
|
try
|
|
|
|
|
ACommand.Execute;
|
|
|
|
|
AConnection.CommitTransaction;
|
|
|
|
|
Result := True;
|
|
|
|
|
except
|
|
|
|
|
on E : Exception do
|
|
|
|
|
begin
|
|
|
|
|
AConnection.RollbackTransaction;
|
|
|
|
|
if Pos('PRIMARY KEY', E.Message) = 0 then
|
|
|
|
|
InsertarLog(False, e.Message + ' (GenerarInventarioEDI)');
|
|
|
|
|
end
|
|
|
|
|
end;
|
2007-08-01 16:16:26 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TdmEDIInventary.InsertarCabecera(const ACabData: TEDIFileData;
|
|
|
|
|
var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
var
|
|
|
|
|
i : integer;
|
|
|
|
|
Registro : PCABINV;
|
|
|
|
|
ACommand: IDASQLCommand;
|
|
|
|
|
AConnection : IDAConnection;
|
|
|
|
|
begin
|
|
|
|
|
Result := False;
|
|
|
|
|
NumRegNuevos := 0;
|
|
|
|
|
AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
|
|
|
|
|
|
|
|
|
|
for i := 0 to ACabData.Count - 1 do
|
|
|
|
|
begin
|
|
|
|
|
Registro := ACabData[i];
|
|
|
|
|
|
|
|
|
|
if not Registro.REGISTRO_OK then
|
|
|
|
|
Continue;
|
|
|
|
|
|
|
|
|
|
ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_CABINV');
|
|
|
|
|
with ACommand do
|
|
|
|
|
begin
|
|
|
|
|
ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC);
|
|
|
|
|
ParamByName('TIPODOC').AsString := Trim(Registro.TIPODOC);
|
|
|
|
|
ParamByName('TIPOLIQ').AsString := Trim(Registro.TIPOLIQ);
|
|
|
|
|
ParamByName('FECHA').AsDateTime := EDIDateToDateF(Trim(Registro.FECHA));
|
|
|
|
|
ParamByName('FECHALIQ').AsDateTime := EDIDateToDateF(Trim(Registro.FECHALIQ));
|
|
|
|
|
ParamByName('EMISOR').AsString := Trim(Registro.EMISOR);
|
|
|
|
|
ParamByName('RECEPTOR').AsString := Trim(Registro.RECEPTOR);
|
|
|
|
|
ParamByName('DPTO').AsString := Trim(Registro.DPTO);
|
|
|
|
|
ParamByName('CENTRO').AsString := Trim(Registro.CENTRO);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
AConnection.BeginTransaction;
|
|
|
|
|
try
|
|
|
|
|
ACommand.Execute;
|
|
|
|
|
AConnection.CommitTransaction;
|
|
|
|
|
NumRegNuevos := NumRegNuevos + 1;
|
|
|
|
|
Result := True;
|
|
|
|
|
except
|
|
|
|
|
on E : Exception do
|
|
|
|
|
begin
|
|
|
|
|
AConnection.RollbackTransaction;
|
|
|
|
|
if Pos('PRIMARY KEY', E.Message) = 0 then
|
|
|
|
|
InsertarLog(False, e.Message + ' (InsertarCabecera INV)');
|
|
|
|
|
end
|
|
|
|
|
end;
|
|
|
|
|
end; //for
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TdmEDIInventary.InsertarCantidades(const ACantData: TEDIFileData;
|
|
|
|
|
var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
var
|
|
|
|
|
i : integer;
|
|
|
|
|
Registro : PCANTINV;
|
|
|
|
|
ACommand: IDASQLCommand;
|
|
|
|
|
AConnection : IDAConnection;
|
|
|
|
|
begin
|
|
|
|
|
Result := False;
|
|
|
|
|
NumRegNuevos := 0;
|
|
|
|
|
AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
|
|
|
|
|
|
|
|
|
|
for i := 0 to ACantData.Count - 1 do
|
|
|
|
|
begin
|
|
|
|
|
Registro := ACantData[i];
|
|
|
|
|
|
|
|
|
|
if not Registro.REGISTRO_OK then
|
|
|
|
|
Continue;
|
|
|
|
|
|
|
|
|
|
ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_CANTINV');
|
|
|
|
|
with ACommand do
|
|
|
|
|
begin
|
|
|
|
|
ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC);
|
|
|
|
|
ParamByName('NUMLIN').AsInteger := StrToInt(Trim(Registro.NUMLIN));
|
|
|
|
|
ParamByName('NUMCANT').AsInteger := StrToInt(Trim(Registro.NUMCANT));
|
|
|
|
|
ParamByName('TIPOCANT').AsString := Trim(Registro.TIPOCANT);
|
|
|
|
|
ParamByName('CANTIDAD').AsFloat := StrToFloat(Trim(Registro.CANTIDAD));
|
|
|
|
|
ParamByName('CENTRO').AsString := Trim(Registro.CENTRO);
|
|
|
|
|
ParamByName('TMOV').AsString := Trim(Registro.TMOV);
|
|
|
|
|
ParamByName('FACT').AsString := Trim(Registro.FACT);
|
|
|
|
|
ParamByName('DEPTO').AsString := Trim(Registro.DEPTO);
|
|
|
|
|
ParamByName('IDVEN').AsString := Trim(Registro.IDVEN);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
AConnection.BeginTransaction;
|
|
|
|
|
try
|
|
|
|
|
ACommand.Execute;
|
|
|
|
|
AConnection.CommitTransaction;
|
|
|
|
|
NumRegNuevos := NumRegNuevos + 1;
|
|
|
|
|
Result := True;
|
|
|
|
|
except
|
|
|
|
|
on E : Exception do
|
|
|
|
|
begin
|
|
|
|
|
AConnection.RollbackTransaction;
|
|
|
|
|
if Pos('PRIMARY KEY', E.Message) = 0 then
|
|
|
|
|
InsertarLog(False, e.Message + ' (InsertarCantidades INV)');
|
|
|
|
|
end
|
|
|
|
|
end;
|
|
|
|
|
end; //for
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TdmEDIInventary.InsertarLineas(const ALinData: TEDIFileData;
|
|
|
|
|
var NumRegNuevos : integer) : Boolean;
|
|
|
|
|
var
|
|
|
|
|
i : integer;
|
|
|
|
|
Registro : PLININV;
|
|
|
|
|
ACommand: IDASQLCommand;
|
|
|
|
|
AConnection : IDAConnection;
|
|
|
|
|
begin
|
|
|
|
|
Result := False;
|
|
|
|
|
NumRegNuevos := 0;
|
|
|
|
|
AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
|
|
|
|
|
|
|
|
|
|
for i := 0 to ALinData.Count - 1 do
|
|
|
|
|
begin
|
|
|
|
|
Registro := ALinData[i];
|
|
|
|
|
|
|
|
|
|
if not Registro.REGISTRO_OK then
|
|
|
|
|
Continue;
|
|
|
|
|
|
|
|
|
|
ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_LININV');
|
|
|
|
|
with ACommand do
|
|
|
|
|
begin
|
|
|
|
|
ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC);
|
|
|
|
|
ParamByName('NUMLIN').AsInteger := StrToInt(Trim(Registro.NUMLIN));
|
|
|
|
|
ParamByName('CODART').AsString := Trim(Registro.CODART);
|
|
|
|
|
ParamByName('FAMILIA').AsString := Trim(Registro.FAMILIA);
|
|
|
|
|
ParamByName('BARRA').AsString := Trim(Registro.BARRA);
|
|
|
|
|
ParamByName('TALLA').AsString := Trim(Registro.TALLA);
|
|
|
|
|
ParamByName('MARCA').AsString := Trim(Registro.MARCA);
|
|
|
|
|
ParamByName('TAMANO').AsString := Trim(Registro.TAMANO);
|
|
|
|
|
ParamByName('SERIE').AsString := Trim(Registro.SERIE);
|
|
|
|
|
ParamByName('COLOR').AsString := Trim(Registro.COLOR);
|
|
|
|
|
ParamByName('MODELO').AsString := Trim(Registro.MODELO);
|
|
|
|
|
ParamByName('DIBUJO').AsString := Trim(Registro.DIBUJO);
|
|
|
|
|
ParamByName('DESCRIP').AsString := Trim(Registro.DESCRIP);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
AConnection.BeginTransaction;
|
|
|
|
|
try
|
|
|
|
|
ACommand.Execute;
|
|
|
|
|
AConnection.CommitTransaction;
|
|
|
|
|
NumRegNuevos := NumRegNuevos + 1;
|
|
|
|
|
Result := True;
|
|
|
|
|
except
|
|
|
|
|
on E : Exception do
|
|
|
|
|
begin
|
|
|
|
|
AConnection.RollbackTransaction;
|
|
|
|
|
if Pos('PRIMARY KEY', E.Message) = 0 then
|
|
|
|
|
InsertarLog(False, e.Message + ' (InsertarLineas INV)');
|
|
|
|
|
end
|
|
|
|
|
end;
|
|
|
|
|
end; //for
|
|
|
|
|
Result := True;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure TdmEDIInventary.InsertarLog(OK: Boolean; Error_msg: String);
|
|
|
|
|
var
|
|
|
|
|
LogService : IEDI_Log;
|
|
|
|
|
begin
|
|
|
|
|
LogService := EDI_Log_Impl.TEDI_Log.Create(Self);
|
|
|
|
|
try
|
|
|
|
|
LogService.InsertarLog(Now, 'INVRPT', OK, Error_msg);
|
|
|
|
|
finally
|
|
|
|
|
LogService := nil;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2007-08-08 15:18:45 +00:00
|
|
|
function TdmEDIInventary.MarcarRegistrosUltimoInventarioEDI: Boolean;
|
|
|
|
|
var
|
|
|
|
|
ACommand: IDASQLCommand;
|
|
|
|
|
AConnection : IDAConnection;
|
|
|
|
|
begin
|
|
|
|
|
Result := False;
|
|
|
|
|
AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
|
|
|
|
|
ACommand := schEDIInventary.NewCommand(AConnection, 'RDX_P_SET_ULTIMOINVENTARIO');
|
|
|
|
|
|
|
|
|
|
AConnection.BeginTransaction;
|
|
|
|
|
try
|
|
|
|
|
ACommand.Execute;
|
|
|
|
|
AConnection.CommitTransaction;
|
|
|
|
|
Result := True;
|
|
|
|
|
except
|
|
|
|
|
on E : Exception do
|
|
|
|
|
begin
|
|
|
|
|
AConnection.RollbackTransaction;
|
|
|
|
|
if Pos('PRIMARY KEY', E.Message) = 0 then
|
|
|
|
|
InsertarLog(False, e.Message + ' (MarcarRegistrosUltimoInventarioEDI)');
|
|
|
|
|
end
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2007-08-01 16:16:26 +00:00
|
|
|
initialization
|
|
|
|
|
dmEDIInventary := TdmEDIInventary.Create(nil);
|
|
|
|
|
|
|
|
|
|
finalization
|
|
|
|
|
FreeAndNil(dmEDIInventary);
|
|
|
|
|
|
|
|
|
|
end.
|