📄 unitproductin.~pas
字号:
unit UnitProductIn;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, StdCtrls, Buttons, DBCtrls, Mask, ToolEdit,
ExtCtrls, CurrEdit, _GClass, AbCBitBt, RXCtrls, ADODB;
type
TfrmProductIn = class(TForm)
Panel2: TPanel;
Panel3: TPanel;
DBNavigator1: TDBNavigator;
btnadd: TBitBtn;
btnErase: TBitBtn;
btnMod: TBitBtn;
btnSave: TBitBtn;
btncancel: TBitBtn;
btnclose: TBitBtn;
ds_ProductIn: TDataSource;
Panel1: TPanel;
RxLabel1: TRxLabel;
RxLabel2: TRxLabel;
btnMx: TAbColBitBtn;
btnGz: TAbColBitBtn;
edtStockNum: TRxCalcEdit;
edtStockZJ: TCurrencyEdit;
DBGrid1: TDBGrid;
lblRkdh: TLabel;
lblJhbh: TLabel;
lblDept: TLabel;
lblJsr: TLabel;
lblJyr: TLabel;
lblZdr: TLabel;
lblBz: TLabel;
lblIn_date: TLabel;
Label8: TLabel;
lblLb: TLabel;
lblWlmc: TLabel;
lblType: TLabel;
Label11: TLabel;
sbtncode: TSpeedButton;
Label9: TLabel;
Label12: TLabel;
Label10: TLabel;
edtRkdh: TEdit;
edtJhbh: TEdit;
cbbDept: TComboBox;
edtJsr: TEdit;
edtJyr: TEdit;
edtzdr: TEdit;
edtBz: TEdit;
dtpRk: TDateEdit;
edtWlmc: TEdit;
edtType: TEdit;
edtWlbm: TEdit;
cbbKw: TComboBox;
cbbKf: TComboBox;
edtNum: TRxCalcEdit;
edtPrice: TCurrencyEdit;
lblPrice: TLabel;
edtTotalPrice: TCurrencyEdit;
lblTotalPrice: TLabel;
ADOQuery_sql: TADOQuery;
lblJhNum: TLabel;
edtJhNum: TRxCalcEdit;
lblTotalIn: TLabel;
edtTotalIn: TRxCalcEdit;
qry_Jhbh: TADOQuery;
procedure btncloseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Clear(form:TForm);
procedure btnaddClick(Sender: TObject);
procedure btnEraseClick(Sender: TObject);
procedure btnModClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btncancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure edtRkdhKeyPress(Sender: TObject; var Key: Char);
procedure edtBzKeyPress(Sender: TObject; var Key: Char);
procedure edtWlbmExit(Sender: TObject);
procedure edtRkdhExit(Sender: TObject);
procedure edtNumExit(Sender: TObject);
procedure ds_ProductInDataChange(Sender: TObject; Field: TField);
procedure btnGzClick(Sender: TObject);
procedure cbbKfExit(Sender: TObject);
procedure sbtncodeClick(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure edtJhbhExit(Sender: TObject);
private
{ Private declarations }
listDept,listDeptName:array of string;
listKf,listKfmc:array of string; //库房代码、库房名称
listKw,listKwmc:array of string; //库位代码、库位名称
public
{ Public declarations }
end;
var
frmProductIn: TfrmProductIn;
isAdd,isMod:boolean;
RecNo:TBookMark;
implementation
uses UnitMain, UnitDm, UnitProcess, UnitSelectCodeNameType, UnitMateBasic;
{$R *.dfm}
procedure TfrmProductIn.btncloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmProductIn.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
frmProductIn:=nil;
action:=cafree;
end;
procedure TfrmProductIn.Clear(form:TForm);
var
i:integer;
begin
for i:=0 to TForm(form).ComponentCount-1 do
begin
if form.Components[i] is TEdit then
TEdit(form.Components[i]).Text:=''
else if form.Components[i] is TComboBox then
begin
TComboBox(form.Components[i]).ItemIndex:=-1;
TComboBox(form.Components[i]).text:='';
end
else if form.Components[i] is TMemo then
TMemo(form.Components[i]).Lines.Text:='';
end;
end;
procedure TfrmProductIn.btnaddClick(Sender: TObject);
begin
isAdd:=true;
isMod:=false;
if btnAdd.caption='增加(&A)' then
begin
btnAdd.enabled:=false;
btnErase.enabled:=false;
btnMod.enabled:=false;
btnSave.enabled:=true;
btnCancel.enabled:=true;
panel2.enabled:=true;
Clear(frmProductIn);
dtpRk.date:=now;
edtNum.text:='';
edtzdr.text:=frmMain.StrOperat;
edtWlmc.Enabled:=false;
edtType.Enabled:=false;
edtPrice.Enabled:=false; //以后一直没恢复正常enabled=true; 所以修改时可不设
edtzdr.enabled:=false;
edtRkdh.setfocus;
end;
end;
procedure TfrmProductIn.btnEraseClick(Sender: TObject);
begin
if dm.qry_ProductIn.RecordCount=0 then exit;
with ADOQuery_sql do
begin
close;
sql.clear;
sql.add('select * from Product_Rk where (Mate_Code='''+edtWlbm.text+''') and (In_Post=''Y'') ');
open;
end;
if ADOQuery_sql.RecordCount>0 then
begin
application.MessageBox('该单据已经过帐,不能被删除!','提示',mb_ok+mb_iconwarning);
exit;
btnErase.setfocus;
end;
if application.MessageBox('确信删除当前记录?','警告',mb_okcancel+mb_iconwarning)=IDOK then
begin
//这里删除基础物料存储过程
with dm.sp_ProductIn do
begin
ProcedureName:='ProductIn_Erase;1';
Parameters.Refresh;
Parameters.ParamByName('@rkdh').value:=edtRkdh.text;
ExecProc;
end;
dm.qry_ProductIn.Close;
dm.qry_ProductIn.Open;
end;
end;
procedure TfrmProductIn.btnModClick(Sender: TObject);
begin
if dm.qry_ProductIn.RecordCount=0 then exit;
//dm.qry_ProductIn.disableControls;
DBGrid1.Options:=DBGrid1.Options - [dgmultiselect];
//获得当前的记录位置
Recno:=dm.qry_ProductIn.GetBookmark;
//关闭与表的联系-------------
dm.qry_ProductIn.DisableControls;
isMod:=true;
isAdd:=false;
if isMod then
begin
with dm.qry_ProductInGz do
begin
close;
sql.Clear;
sql.Add('select * from Product_Rk where (in_bill='''+trim(edtRkdh.text)+''') and (in_post=''Y'') ');
open;
end;
if dm.qry_ProductInGz.recordcount>0 then
begin
application.MessageBox('过帐后的单据,不能再修改!','警告',mb_ok+mb_iconwarning);
exit;
end;
dm.qry_ProductIn.EnableControls;
end;
btnAdd.Enabled:=false;
btnErase.Enabled:=false;
btnMod.Enabled:=false;
btnSave.Enabled:=true;
btnCancel.Enabled:=true;
panel2.enabled:=true;
edtZdr.Enabled:=false;
edtWlmc.Enabled:=false;
edtType.Enabled:=false;
edtPrice.Enabled:=false;
edtJhbh.setfocus;
end;
procedure TfrmProductIn.btnSaveClick(Sender: TObject);
var
position:integer;
begin
if edtRkdh.text='' then
begin
application.MessageBox('注意:'+#13+' 入库单号不能为空!','警告',mb_ok+mb_iconwarning);
edtRkdh.setfocus;
exit;
end;
if isAdd then
dm.sp_ProductIn.ProcedureName:='ProductIn_Add;1';
if isMod then
dm.sp_ProductIn.ProcedureName:='ProductIn_Mod;1';
with dm.sp_ProductIn do
begin
Parameters.Refresh;
Parameters.ParamByName('@rkdh').value:=trim(edtRkdh.Text);
Parameters.ParamByName('@jhbh').value:=trim(edtJhbh.text);
Parameters.ParamByName('@wlbm').value:=trim(edtWlbm.Text);
Parameters.ParamByName('@rq').value:=formatdatetime('yyyy-mm-dd',dtpRk.Date);
Parameters.Parambyname('@Lb').value:='CPR';//出入库类别---->成品入库
Parameters.ParamByName('@Num').value:=trim(edtNum.text);
Parameters.ParamByName('@dj').value:=trim(edtPrice.Text);
Parameters.ParamByName('@zj').value:=trim(edtTotalPrice.text); //这里可直接存储数据,在过帐中也可更新入库总价,没影响
Parameters.ParamByName('@PostMark').value:='N';
Parameters.ParamByName('@jsr').value:=trim(edtJsr.text);
Parameters.ParamByName('@jyr').value:=trim(edtJyr.text);
Parameters.ParamByName('@zdr').value:=trim(edtZdr.text);
Parameters.ParamByName('@zy').value:=trim(edtBz.text);
//---防止部门代码为空-----------------------
if cbbDept.text='' then
begin
application.MessageBox('注意:'+#13#10+' 请输入入库部门!','警告',mb_ok+mb_iconwarning);
cbbDept.setfocus;
exit;
end else
begin
//查找中间的空格
if pos(' ',trim(cbbDept.text))>0 then
begin
position:=cbbDept.items.indexof(cbbDept.text);
if position <> -1 then
Parameters.ParamByName('@bm').value:=listDept[position]
else
Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
end else
Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
end;
//
Parameters.ParamByName('@kf').value:=listkf[cbbkf.itemindex];//库房代码
if cbbkw.text='' then
Parameters.ParamByName('@kw').value:=''
else
begin
Parameters.ParamByName('@kw').value:=listkw[cbbkw.itemindex];//库位代码
end;
ExecProc;
end;
//---------------------------------------
if isAdd then isAdd:=false;
if isMod then isMod:=false;
Panel2.Enabled:=false;
btnadd.enabled:=true;
btnadd.SetFocus;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
Dm.qry_ProductIn.EnableControls;
Dm.qry_ProductIn.close;
Dm.qry_ProductIn.open;
end;
procedure TfrmProductIn.btncancelClick(Sender: TObject);
begin
if isAdd then isadd:=false;
if isMod then isMod:=false;
dm.qry_Zz.enableControls;
if btnCancel.caption='取消(&C)' then
begin
panel2.enabled:=false;
edtStockNum.Enabled:=false;
edtStockZJ.Enabled:=false;
btnMx.Enabled:=true;
btnGz.Enabled:=true;
btnAdd.enabled:=true;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
end;
DM.qry_ProductIn.EnableControls;
DM.qry_ProductIn.close;
DM.qry_ProductIn.open;
end;
procedure TfrmProductIn.FormCreate(Sender: TObject);
var
i:integer;
begin
with ADOQuery_sql do
begin
//添加部门代码
close;
sql.clear;
sql.add('select * from Department order by Dept_id');
open;
setlength(listDept,recordcount);
setlength(listDeptName,recordcount);
cbbDept.Items.clear;
for i:=0 to recordcount - 1 do
begin
listDept[i]:=fieldbyname('Dept_id').asstring;
listDeptName[i]:=fieldbyname('Dept_name').asstring;
cbbDept.items.Add(listDept[i]+' '+listDeptName[i]);
next;
end;
//添加库房代码
close;
sql.clear;
sql.add('select * from StoreRoom order by Storeroom_zip');
open;
setlength(listKf,recordcount);
setlength(listKfmc,recordcount);
cbbKf.Items.clear;
for i:=0 to recordcount - 1 do
begin
listKf[i]:=fieldbyname('Storeroom_zip').asstring;
listKfmc[i]:=fieldbyname('Storeroom_name').asstring;
cbbKf.items.Add(listKf[i]+' '+listKfmc[i]);
next;
end;
//添加库位代码
{close;
sql.clear;
sql.add('select * from Storeposition order by Storeroom_zip,Storeplace_zip');
open;
setlength(listKw,recordcount);
setlength(listKwmc,recordcount);
cbbKw.Items.clear;
for i:=0 to recordcount - 1 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -