?? invdm.~pas
字號:
lcP := SearchFieldDefData(TableName, lcUdP^.Index);
if lcP = nil then begin
Error := -1;
Exit;
end;
Sqls := Sqls + Sep + lcP^.ColumnName +
'=' + MakeUpdateValue(lcP^.DataType, lcUdP^.TARGET);
Sep := ',';
end;
if RecIdType = 0 then SRecId := 'rec_id'
else SRecId := 'rec_id';
Result := 'UPDATE ' + TableName + ' SET '+ Sqls +
' WHERE ' + SRecId + '=' + IntToStr(Recid);
end;
{***********************************************************************************}
procedure Tdm_Inventory.DataModuleCreate(Sender: TObject);
var
Alias, UserName, Password: string;
begin
LoadDBInfo(Alias, UserName, Password);
DBConnected := DataBaseOpen(Alias, UserName, Password);
if not DBConnected then Exit;
RecIdType := 1;
//-- TList Create & Public List Data Read
FAllIOList := TList.Create;
FAllIOList.Clear;
FShiZaiList := TList.Create;
FShiZaiList.Clear;
FEmpList := TList.Create;
FEmpList.Clear;
FGuageList := TList.Create;
FGuageList.Clear;
FInOutIDList := TList.Create;
FInOutIDList.Clear;
ShigenTBL := TList.Create;
ShigenTBL.Clear;
FDepartShigen := TList.Create;
FDepartShigen.Clear;
SeihinTBL := TList.Create;
SeihinTBL.Clear;
shizai_kubunList := TList.Create;
shizai_kubunList.Clear;
FInOutStkList := TList.Create;
FInOutStkList.Clear;
FInOutStkCostList := TList.Create;
FInOutStkCostList.Clear;
FUserPrivilegeList := TList.Create;
FUserPrivilegeList.Clear;
ReRead_Cnt := 0;
Delete_Cnt := 0;
SetLength(ReRead_RID, ReRead_Cnt);
SetLength(Delete_RID, Delete_Cnt);
SetTableDefs;
Delete_RepeatMaterialcode;
Read_empInfo;
Read_MatGuageInfo(FGuageList);
Read_IOIDInfo(-1, FInOutIDList);
ReadShigen;
ReadDepartment;
ReadSeihin;
ReadShiZai_Kubun;
ReadShizai(FShiZaiList);
Read_UserPrivilegeList(FUserPrivilegeList);
cUType[00] := GetMultiLingalMsg(3101, 'PCS');
cUType[01] := GetMultiLingalMsg(3102, '套');
cUType[02] := GetMultiLingalMsg(3103, '支');
cUType[03] := GetMultiLingalMsg(3104, '卷');
cUType[04] := GetMultiLingalMsg(3105, '批');
cUType[05] := GetMultiLingalMsg(3106, '塊');
cUType[06] := GetMultiLingalMsg(3107, '雙');
cUType[07] := GetMultiLingalMsg(3108, '付');
cUType[08] := GetMultiLingalMsg(3109, '桶');
cUType[09] := GetMultiLingalMsg(3110, '個');
cUType[10] := GetMultiLingalMsg(3111, '公斤');
cUType[11] := GetMultiLingalMsg(3112, '噸');
cUType[12] := GetMultiLingalMsg(3113, '條');
cUType[13] := GetMultiLingalMsg(3114, '打');
cUType[14] := GetMultiLingalMsg(3115, '把');
cUType[15] := GetMultiLingalMsg(3116, '張');
cUType[16] := GetMultiLingalMsg(3117, '枚');
cUType[17] := GetMultiLingalMsg(3118, '根');
cUType[18] := GetMultiLingalMsg(3119, '臺');
cUType[19] := GetMultiLingalMsg(3120, '杯');
end;
procedure Tdm_Inventory.DataModuleDestroy(Sender: TObject);
begin
if DBConnected then begin
//-- TList Variant Release
ListFreeMemory(FShiZaiList);
ListFreeMemory(FEmpList);
ListFreeMemory(FGuageList);
ListFreeMemory(FAllIOList);
ListFreeMemory(FInOutIDList);
ListFreeMemory(ShigenTBL);
ListFreeMemory(FDepartShigen);
ListFreeMemory(SeihinTBL);
ListFreeMemory(shizai_kubunList);
ListFreeMemory(FInOutStkList);
ListFreeMemory(FInOutStkCostList);
end;
DatabaseClose;
end;
{***********************************************************************************}
procedure Tdm_Inventory.LoadDBInfo(var Alias, UserName, Password: string);
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.INI'));
with IniFile do begin
UserName := IniFile.ReadString('LOGIN', 'UI', 'DP40');
Password := IniFile.ReadString('LOGIN', 'PA', '4640');
Alias := IniFile.ReadString('LOGIN', 'ALIAS', 'PM');
IniData.OutPrice := ReadString('UNITPIRCE', 'OutPrice','0');
IniData.InPrice := ReadString('UNITPIRCE', 'InPrice','0');
IniData.isExcelPrint := (ReadString('ExcelPrint','Print','0')='0');
IniData.isCheckQty := (ReadString('CheckStatus', 'checkQty', '0') = '0');
IniData.isTuneQty := (ReadString('CheckStatus', 'tuneQty', '0') = '0');
IniData.matstkid := ReadString('CheckStatus', 'matstkid','A');
IniData.otherstkid := ReadString('CheckStatus', 'otherstkid','B');
Free;
end;
end;
function Tdm_Inventory.DatabaseOpen(Alias, UserName, PassWord: string): Boolean;
begin
Result := True;
try
DataBase.Connected := False;
DataBase.LoginPrompt := False;
DataBase.AliasName := Alias;
DataBase.DatabaseName := 'POPDB';
DataBase.Params.Clear;
DataBase.Params.Add('USER NAME='+ UserName);
DataBase.Params.Add('PASSWORD=' + Password);
DataBase.DatabaseName := DataBase.DatabaseName;
Query.DatabaseName := DataBase.DatabaseName;
StoredProc.DatabaseName := DataBase.DatabaseName;
qryAutoPaperNo.DatabaseName := DataBase.DatabaseName;
StpInOutStk.DatabaseName := DataBase.DatabaseName;
qrypm_mrp.DatabaseName := DataBase.DatabaseName;
//-- Initlize TQuery & TStoreProc.Database
DataBase.Connected := True;
except
Result := False;
end;
end;
procedure Tdm_Inventory.DatabaseClose;
begin
DataBase.Close;
DataBase.Connected := False;
end;
{***********************************************************************************}
Function Tdm_Inventory.CreateQuery(qryName: string; dbName: string): TQuery;
var
sQry: TQuery;
Begin
sQry := TQuery.Create(nil);
with sQry do
begin
Name := qryName;
DatabaseName := dbName;
SQL.Clear;
end;
result := sQry;
end;
Function Tdm_Inventory.CreateStroreProc(StorProc: string; dbName: string): TStoredProc;
var
tmpStoreProc: TStoredProc;
begin
tmpStoreProc := TStoredProc.Create(nil);
with tmpStoreProc do
begin
Name := StorProc;
DatabaseName := dbName;
SessionName := SessionName;
Params.Clear;
end;
result := tmpStoreProc
end;
function Tdm_Inventory.ExecuteQuery(Sqls: string): Boolean;
begin
Result := True;
with Query do begin
Active := False;
RequestLive :=False;
Sql.Clear;
Sql.Add(Sqls);
try
RequestLive := True;
ExecSQL;
except
RequestLive :=False;
Result := False;
end;
Close;
end;
end;
function Tdm_Inventory.GetRecid1: LongInt;
begin
with StoredProc do begin
close;
StoredProcName := 'GetRecid1';
Params.Clear;
Params.CreateParam(ftInteger, '@outrecid', ptOutput).AsInteger;
Prepare;
ExecProc;
try
Result := ParamByName('@outrecid').AsInteger;
except
Result := 0;
end;
Unprepare;
end;
end;
//-- get REC_ID
function Tdm_Inventory.GetRecid7: LongInt;
begin
with StoredProc do begin
close;
StoredProcName := 'GetRecid7';
Params.Clear;
Params.CreateParam(ftInteger, '@outrecid', ptOutput).AsInteger;
Prepare;
ExecProc;
try
Result := ParamByName('@outrecid').AsInteger;
except
Result := 0;
end;
Unprepare;
end;
end;
{***********************************************************************************}
procedure Tdm_Inventory.ListFreeMemory(List:TList);
var
i: Integer;
begin
for i:=0 to List.Count-1 do Dispose(List[i]);
List.Clear;
end;
{***********************************************************************************}
function Tdm_Inventory.UpdateDatabase(TableName: string; var Recid: LongInt; UpdateList: TList): Integer;
var
Error: Integer;
Sqls: string;
InvValue: TINVENTORY_VALUE;
TmpRecId, OrderID,
PartID, ProcessID: Integer;
iBool: Boolean;
irtnqty,irtnweight,amount: double;
begin
TmpRecId := Recid;
ZeroMemory(@InvValue, SizeOf(TINVENTORY_VALUE));
InvValue.inv_rec_id := Recid;
GetInvData(InvValue, UpdateList, Error);
InvValue.hiyo_kubun_rec_id := dm_Inventory.GetMaterialHiyoKubunID(InvValue.material_rec_id);
///////////////////////////////////////////////
//-- 入庫時 --> 對應采購數據的處理
case InvValue.ikind of
0: begin //-- 入庫
if InvValue.order_no > 0 then
begin
GetOrderPartIDFromOrderNo(InvValue.order_no, OrderID, PartID, ProcessID);
InvValue.order_rec_id := OrderID;
InvValue.part_rec_id := PartID;
InvValue.process_rec_id := ProcessID;
if dm_Inventory.is_NeedUpdateOrdered(InvValue, TmpRecId) then
begin
Error := UpdateProcess_jkcd(InvValue);
if Error = 0 then begin
Result := UpdateLog_jkcd(InvValue);
end;
end;
end;
if Recid < 0 then //-- create insert SQL statement
Sqls := MakeInsertSqlSentence(TableName, Recid, UpdateList, Error)
else //-- Create Update SQL Statement
Sqls := MakeUpdateSqlSentence(TableName, Recid, UpdateList, Error);
if Error = 0 then
begin
if ExecuteQuery(Sqls) = False then Error := -99;
if (InvValue.inv_rec_id<0) then
begin
InvValue.inv_rec_id := 0;
dm_Inventory.UpdateProcess_flag2(InvValue);
end;
end;
Result := Error;
end;
/////////////////////////////////////////////////////////////////////
1: begin //-- 出庫
GetOrderPartIDFromOrderNo(InvValue.order_no, OrderID, PartID, ProcessID);
InvValue.order_rec_id := OrderID;
InvValue.part_rec_id := PartID;
InvValue.process_rec_id := ProcessID;
if Recid < 0 then //-- create insert SQL statement
Sqls := MakeInsertSqlSentence(TableName, Recid, UpdateList, Error)
else //-- Create Update SQL Statement
Sqls := MakeUpdateSqlSentence(TableName, Recid, UpdateList, Error);
if Error = 0 then
begin
if ExecuteQuery(Sqls) = False then Error := -99;
end;
Result := Error;
InvValue.inv_rec_id := Recid;
if (InvValue.input_order_rec_id>0) then //-- 出庫有模號的反映到--> Kotei/Log
begin
if ((InvValue.order_no>0)and(InvValue.input_order_rec_id=InvValue.order_rec_id)) then exit; //-- 有訂貨的以訂購為準
//-- 沒有訂貨的但是對應模號的出庫則新增出庫數據到的成本的用料歷史中
if TmpRecId < 0 then begin
Error := InsertProcess(InvValue, InvValue.process_rec_id);
if Error = 0 then
Error := InsertLog(InvValue);
end
else begin
Error := UpdateProcess(InvValue);
if Error = 0 then
Error := UpdateLog(InvValue);
end;
end;
end;
////////////////////////////////////////////////////////////////////
2: begin //-- 退貨
if Recid < 0 then //-- create insert SQL statement
Sqls := MakeInsertSqlSentence(TableName, Recid, UpdateList, Error)
else //-- Create Update SQL Statement
Sqls := MakeUpdateSqlSentence(TableName, Recid, UpdateList, Error);
if Error = 0 then
begin
if ExecuteQuery(Sqls) = False then Error := -99;
end;
Result := Error;
InvValue.inv_rec_id := Recid;
if (InvValue.input_order_rec_id>0) then //-- 出庫有模號的反映到--> Kotei/Log
begin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -