📄 imst.pas
字号:
unit ImST;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGridEh, ComCtrls, dxExEdtr, dxEdLib,
dxCntner, dxEditor, StdCtrls, ExtCtrls, ToolWin,StrUtils;
type
TFrmImST = class(TForm)
cntTitleBar: TControlBar;
ToolBar2: TToolBar;
ToolButton2: TToolButton;
btnSave: TToolButton;
btnNew: TToolButton;
btnDelete: TToolButton;
ToolButton7: TToolButton;
btnCheck: TToolButton;
btnUnCheck: TToolButton;
ToolButton9: TToolButton;
btnQuit: TToolButton;
ToolButton10: TToolButton;
Panel1: TPanel;
dtpBillDate: TdxDateEdit;
Label5: TLabel;
edtBillNo: TdxEdit;
Label6: TLabel;
Panel2: TPanel;
StatusBar1: TStatusBar;
DBGridEh1: TDBGridEh;
Label2: TLabel;
edtcontext: TdxMemo;
qurfree: TADOQuery;
DataSource1: TDataSource;
qurDetail: TADOQuery;
Label1: TLabel;
procedure DBGridEh1Columns0EditButtonClick(Sender: TObject;
var Handled: Boolean);
procedure btnDeleteClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnQuitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnNewClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
procedure DBGridEh1Columns3UpdateData(Sender: TObject;
var Text: String; var Value: Variant; var UseText, Handled: Boolean);
procedure btnCheckClick(Sender: TObject);
procedure btnUnCheckClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
gEdit:Boolean;
gBillNo:String;
Procedure IniImST;
procedure EditImST(BillNo:String);
end;
var
FrmImST: TFrmImST;
implementation
uses database, BomExp, Select, MyMath, ExST, ImSTExp;
{$R *.dfm}
{ TFrmImST }
procedure TFrmImST.IniImST;
var s:string;
begin
edtBillNo.Clear;
Label1.Visible:=false;
dtpBillDate.Enabled:=true;
dtpBillDate.Date:=date;
btnCheck.Enabled:=false;
btnUnCheck.Enabled:=false;
btnDelete.Enabled:=true;
edtcontext.Enabled:=true;
DBGridEh1.ReadOnly:=false;
DBGridEh1.Columns[0].ButtonStyle:=cbsDropDown;
DBGridEh1.Columns[1].ButtonStyle:=cbsDropDown;
s:='WPLK'+FormatDateTime('yymmdd',date);
qurfree.Close;
qurfree.SQL.Clear;
qurfree.sql.Add('select max(入库单号) as a from 物品入库主表 where 入库单号 like '''+s+'%'' ');
qurfree.Open;
if qurfree.fieldbyname('a').IsNull then
edtBillNo.Text:=S+'0001'
else
edtBillNo.Text:=s+FormatFloat('0000',strtoint(rightstr(qurfree.fieldbyname('a').AsString,4))+1);
qurDetail.Close;
qurDetail.SQL.Clear;
qurDetail.SQL.Add('select 入库单号,物品编码,物品名称,物品单价,物品数量,金额 from 物品入库明细表 where 入库单号=''aaaa''');
qurDetail.Open;
gBillNo:=edtBillNo.Text;
gEdit:=False;
end;
procedure TFrmImST.DBGridEh1Columns0EditButtonClick(Sender: TObject;
var Handled: Boolean);
var
s: string;
begin
s :=' select 物品编码,物品名称,物品单价 from 仓库信息 ';
try
frmselect:=Tfrmselect.create(self);
frmselect.ClickCreate(s, DBGridEh1.InplaceEditor);
with frmselect do
begin
frmselect.Width := 240;
selectgrid.Columns[0].MaxWidth := 120;
selectgrid.Columns[1].MaxWidth := 120;
selectgrid.Columns[2].Visible:=False;
selectgrid.Columns[3].Visible:=False;
end;
if frmselect.ShowModal=mrok then
begin
qurDetail.Edit;
qurDetail.FieldByName('物品编码').AsString := frmselect.qurselect.fieldbyname('物品编码').AsString;
qurDetail.FieldByName('物品名称').AsString := frmselect.qurselect.fieldbyname('物品名称').AsString;
qurDetail.FieldByName('物品单价').AsString := frmselect.qurselect.fieldbyname('物品单价').AsString;
qurDetail.Post;
DBGridEh1.SelectedIndex:=3;
end;
finally
frmselect.Free;
end;
end;
procedure TFrmImST.EditImST(BillNo:String);
begin
QurFree.Close;
QurFree.SQL.Clear;
QurFree.SQL.Add('SELECT * FROM 物品入库主表 where 入库单号='''+BillNo+'''');
QurFree.Open;
Label1.Visible:=false;
if qurfree.FieldByName('单据状态').AsString='审核' then begin
dtpBillDate.Enabled:=false;
btnDelete.Enabled:=false;
edtcontext.Enabled:=false;
DBGridEh1.ReadOnly:=true;
DBGridEh1.Columns[0].ButtonStyle:=cbsNone;
DBGridEh1.Columns[1].ButtonStyle:=cbsNone;
btnCheck.Enabled:=false;
btnunCheck.Enabled:=true;
Label1.Visible:=true;
end;
if qurfree.FieldByName('单据状态').AsString='制单' then begin
dtpBillDate.Enabled:=true;
btnDelete.Enabled:=true;
edtcontext.Enabled:=true;
DBGridEh1.ReadOnly:=false;
DBGridEh1.Columns[0].ButtonStyle:=cbsDropDown;
DBGridEh1.Columns[1].ButtonStyle:=cbsDropDown;
btnCheck.Enabled:=true;
btnunCheck.Enabled:=false;
end;
edtBillNo.Text:= qurfree.fieldbyname('入库单号').asstring;
dtpBillDate.Date:=qurfree.fieldbyname('制单日期').AsDateTime;
edtcontext.Text:=qurfree.fieldbyname('备注').asstring;
qurDetail.Close;
qurDetail.SQL.Clear;
qurDetail.SQL.Add('select * from 物品入库明细表 where 入库单号='''+BillNo+'''');
qurDetail.Open;
gBillNo:=BillNo;
gEdit:=True;
end;
procedure TFrmImST.btnDeleteClick(Sender: TObject);
begin
if not qurDetail.IsEmpty then qurDetail.Delete;
end;
procedure TFrmImST.btnSaveClick(Sender: TObject);
begin
if QueryDlg('是否保存!')=false then exit;
if qurDetail.IsEmpty then begin
infook('数据不能为空');
exit;
end;
if gEdit=false then
begin
Datamod.ExecSQL('insert into 物品入库主表(入库单号,制单人,制单日期,备注,单据状态) '
+' values('''+edtBillNo.text+''','''+gLoginName+''','''+dtpBillDate.text+''','''+edtcontext.text+''',''制单'') ');
end
else
begin
Datamod.ExecSQL('update 物品入库主表 set 备注='''+edtcontext.text+''' where 入库单号='''+gBillNo+''' ');
end;
qurDetail.DisableControls;
qurDetail.First;
while not qurDetail.Eof do
begin
qurDetail.Edit;
qurDetail.FieldByName('入库单号').AsString :=edtBillNo.text;
qurDetail.Post;
if (qurDetail.FieldByName('物品编码').isNull=True ) and
(qurDetail.FieldByName('物品名称').isNull=True ) then qurDetail.Delete;
qurDetail.Next;
end;
qurDetail.EnableControls;
with Datamod do
begin
try
dbmain.BeginTrans;
qurDetail.UpdateBatch();
dbmain.CommitTrans;
InfoOk('保存成功');
except
dbmain.RollbackTrans;
InfoOk('保存失败');
exit;
end;
end;
EditImST(gBillNo);
FrmImSTExp.btnFreshClick(Sender);
end;
procedure TFrmImST.btnQuitClick(Sender: TObject);
begin
close;
end;
procedure TFrmImST.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FrmImST:=Nil;
Action:=Cafree;
end;
procedure TFrmImST.btnNewClick(Sender: TObject);
begin
if QueryDlg('确定新增入库单!')=True then iniImST;
end;
procedure TFrmImST.FormShow(Sender: TObject);
begin
FrmImST.Top:=0;
FrmImST.Left:=0;
FrmImST.Width:=630;
FrmImST.Height:=455;
end;
procedure TFrmImST.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
if key =#13 then begin
if dbgrideh1.SelectedIndex =0 then
begin
dbgrideh1.SelectedIndex :=1;
exit ;
end;
if dbgrideh1.SelectedIndex=1 then
begin
dbgrideh1.SelectedIndex:=3;
exit;
end;
if dbgrideh1.SelectedIndex=3 then
begin
qurdetail.Append;
dbgrideh1.SelectedIndex :=0 ;
exit;
end;
end;
end;
procedure TFrmImST.DBGridEh1Columns3UpdateData(Sender: TObject;
var Text: String; var Value: Variant; var UseText, Handled: Boolean);
begin
qurDetail.FieldByName('金额').AsFloat:=
qurDetail.FieldByName('物品单价').AsFloat*strtoint(text)
end;
procedure TFrmImST.btnCheckClick(Sender: TObject);
begin
if QueryDlg('确定审核单据<'+gBillNo+'>?')=false then exit;
FrmImSTExp.Check (gBillNo);
EditImST(gBillNo);
FrmImSTExp.btnFreshClick(Sender);
end;
procedure TFrmImST.btnUnCheckClick(Sender: TObject);
begin
if QueryDlg('确定反审核单据<'+gBillNo+'>?')=false then exit;
FrmImSTExp.UnCheck (gBillNo);
EditImST(gBillNo);
FrmImSTExp.btnFreshClick(Sender);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -