📄 univtt.pas
字号:
unit UNIVTT;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, Grids, DBGrids, ComCtrls, Buttons, ToolWin,
Menus, FlEdit, Gauges, JLOOKUP, JEdit, ExtCtrls;
type
TFMIVTT = class(TForm)
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
LB_CON21: TJEdit;
LB_CON22: TJEdit;
Button1: TButton;
DBGrid3: TDBGrid;
BTNQUT: TSpeedButton;
ED_BGENO: JLOOKUPBOX;
BTNINS: TSpeedButton;
Gauge: TGauge;
BTCAN: TBitBtn;
CAN_UPDATE_RBRN: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure BTNQUTClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BTNINSClick(Sender: TObject);
procedure BTCANClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
PROCEDURE INSERT_TO_IVTT(T_BGENO:STRING;T_ITCNR,T_ITCNV,T_ITCNT :INTEGER;T_ITTRN :BOOLEAN);
PROCEDURE UPDATE_TO_RBRN(T_BGENO:STRING;T_BGCNT:INTEGER);
PROCEDURE DELETE_IVTA(T_BGENO :STRING);
//新增库存位置
PROCEDURE APPEND_NEW_RBRN(T_BGENO :STRING);
FUNCTION FIND_RBRN(T_BGENO:STRING):INTEGER;
public
{ Public declarations }
end;
var
FMIVTT: TFMIVTT;
implementation
uses sysini, un_utl, fm_utl, DB_UTL, MAIND,
UNIVTTD;
{$R *.DFM}
PROCEDURE TFMIVTT.INSERT_TO_IVTT(T_BGENO:STRING;T_ITCNR,T_ITCNV,T_ITCNT :INTEGER;T_ITTRN :BOOLEAN);
VAR T_ITTRNX : STRING;
BEGIN
IF T_ITTRN = TRUE THEN T_ITTRNX := '1';
IF T_ITTRN = FALSE THEN T_ITTRNX := '0';
FMIVTTD.QINS.SQL.Clear;
FMIVTTD.QINS.SQL.Add('INSERT INTO IVTT ');
FMIVTTD.QINS.SQL.Add('(ITENO, BGENO, ITCNR, ITCNV, ITCNT,');
FMIVTTD.QINS.SQL.Add(' ITDAT, ITTME, ITTRN) ');
FMIVTTD.QINS.SQL.Add('VALUES (');
FMIVTTD.QINS.SQL.Add(''''+DBTABLEFINDMAXCNT('DB_IVTT','IVTT','ITENO',6,1)+''',');
FMIVTTD.QINS.SQL.Add(''''+T_BGENO+''',');
FMIVTTD.QINS.SQL.Add(' '+INTTOSTR(T_ITCNR)+' ,');
FMIVTTD.QINS.SQL.Add(' '+INTTOSTR(T_ITCNV)+' ,');
FMIVTTD.QINS.SQL.Add(' '+INTTOSTR(T_ITCNT)+' ,');
FMIVTTD.QINS.SQL.Add( _DT+DATETOSTR(DATE)+_DT +',');
FMIVTTD.QINS.SQL.Add(''''+TIME_GET_24H(TIME)+''',');
FMIVTTD.QINS.SQL.Add(' '+T_ITTRNX+' )');
FMIVTTD.QINS.EXECSQL;
END;
PROCEDURE TFMIVTT.UPDATE_TO_RBRN(T_BGENO:STRING; T_BGCNT:INTEGER);
BEGIN
IF T_BGCNT < 0 THEN T_BGCNT := 0;
FMMAIND.QINS.SQL.Clear;
FMMAIND.QINS.SQL.Add('UPDATE BGDS ');
FMMAIND.QINS.SQL.Add('SET');
FMMAIND.QINS.SQL.Add('BGCST = '+INTTOSTR(T_BGCNT)+'');
FMMAIND.QINS.SQL.Add('WHERE BGENO = '''+T_BGENO+'''');
FMMAIND.QINS.EXECSQL;
END;
PROCEDURE TFMIVTT.DELETE_IVTA(T_BGENO :STRING);
BEGIN
FMIVTTD.QINS.SQL.Clear;
FMIVTTD.QINS.SQL.Add('DELETE FROM IVTA');
FMIVTTD.QINS.SQL.Add('WHERE BGENO = '''+T_BGENO+'''');
FMIVTTD.QINS.EXECSQL;
END;
PROCEDURE TFMIVTT.APPEND_NEW_RBRN(T_BGENO :STRING);
BEGIN
//新增库存位置=============================================================
FMMAIND.QINS.SQL.Clear;
FMMAIND.QINS.SQL.Add('INSERT INTO BGDS');
FMMAIND.QINS.SQL.Add('( BGENO, BGCNT )');
FMMAIND.QINS.SQL.Add('VALUES');
FMMAIND.QINS.SQL.Add('('''+T_BGENO+''',0 )');
FMMAIND.QINS.ExecSQL;
END;
FUNCTION TFMIVTT.FIND_RBRN(T_BGENO:STRING):INTEGER;
BEGIN
RESULT := 0;
IF TRIM(T_BGENO) = '' THEN EXIT;
//找是否有库存===========================================
FMMAIND.QUERY.SQL.Clear;
FMMAIND.QUERY.SQL.Add('SELECT * FROM BGDS');
FMMAIND.QUERY.SQL.Add('WHERE BGENO IS NOT NULL');
FMMAIND.QUERY.SQL.Add(' AND BGENO = '''+T_BGENO+'''');
FMMAIND.QUERY.Close;
FMMAIND.QUERY.Open;
IF FMMAIND.QUERY.Eof = TRUE THEN RESULT := -9999
ELSE BEGIN //找到产品
RESULT := FMMAIND.QUERY.FieldByName('BGCST').AsInteger;
END;
END;
procedure TFMIVTT.FormCreate(Sender: TObject);
begin
IF FormExists('FMIVTTD')=FALSE THEN Application.CreateForm(TFMIVTTD, FMIVTTD );
FMIVTTD.QIVTT.CLOSE;
FMIVTTD.QIVTT.OPEN;
FMIVTTD.QIVTA.CLOSE;
FMIVTTD.QIVTA.OPEN;
end;
procedure TFMIVTT.BTNQUTClick(Sender: TObject);
begin
close;
end;
procedure TFMIVTT.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FMIVTTD.Free;
FMIVTT.RELEASE;
end;
procedure TFMIVTT.BTNINSClick(Sender: TObject);
VAR T_BGENO : STRING;
T_BGCNT, T_ITCNV : INTEGER;
begin
IF (MessageDlg('是否开始?',mtConfirmation,[mbYes,mbNo],0)=mrNo) Then EXIT;
BTCAN.Visible := TRUE;
DBGrid1.DataSource := NIL;
WITH FMIVTTD DO
BEGIN
Gauge.Progress := 0;
Gauge.MaxValue := QIVTA.RecordCount;
QIVTA.First;
WHILE NOT QIVTA.Eof DO
BEGIN
Gauge.AddProgress(1);
IF BTCAN.Visible = FALSE THEN BREAK; //取消转入
T_BGENO := QIVTA.FieldByName('BGENO').AsString;
T_ITCNV := QIVTA.FieldByName('IACNT').AsINTEGER;
//找是否有库存===========================================
T_BGCNT := FIND_RBRN(T_BGENO);
//新增库存位置
IF T_BGCNT <= -9999 THEN APPEND_NEW_RBRN(T_BGENO);
IF T_BGCNT >= 0 THEN
BEGIN
IF CAN_UPDATE_RBRN.Checked = TRUE THEN
BEGIN
UPDATE_TO_RBRN(T_BGENO,T_BGCNT); //更新库存
INSERT_TO_IVTT(T_BGENO,T_ITCNV,T_BGCNT,T_ITCNV-T_BGCNT,TRUE); //新增记录
DELETE_IVTA(T_BGENO); //删除已处理过的记录
END;
END;
QIVTA.Next;
END;
END;
DBGrid1.DataSource := FMIVTTD.DSIVTA;
BTCAN.Visible := FALSE;
FMIVTTD.QIVTA.CLOSE;
FMIVTTD.QIVTA.OPEN;
FMIVTTD.QIVTT.CLOSE;
FMIVTTD.QIVTT.OPEN;
end;
procedure TFMIVTT.BTCANClick(Sender: TObject);
begin
BTCAN.Visible := FALSE;
end;
procedure TFMIVTT.Button1Click(Sender: TObject);
begin
FMIVTTD.QIVTT.SQL.CLEAR;
FMIVTTD.QIVTT.SQL.ADD('SELECT * FROM IVTT');
FMIVTTD.QIVTT.SQL.ADD('WHERE BGENO IS NOT NULL ');
IF ED_BGENO.Text<> '' THEN FMIVTTD.QIVTT.SQL.ADD(' AND BGENO LIKE ''%'+ED_BGENO.Text+'%''');
FMIVTTD.QIVTT.CLOSE;
FMIVTTD.QIVTT.OPEN;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -