📄 sfc_mnrequest_b1.pas
字号:
end
else}
pnl_Hint.Visible :=False;
// end;
//控制保存后届面不变SHOWFLAG是基类的参数
if (showflag=True) and (status<>'Add') then
exit;
checkbox1.Checked :=False;
checkbox2.Checked :=False;
BillTypeCode:=Param2;
lbl_Mono.Caption:=AdoQry_Head.fieldbyname('mono').asstring;
lbl_MoLineno.Caption:=AdoQry_Head.fieldbyname('MoLineno').asstring;
lbl_Item.Caption:=AdoQry_Head.fieldbyname('ItemCode').asstring+' '+Frm_Sfc_MnRequest1.AdoQry_Head.fieldbyname('ItemName').asstring;
lbl_Dept.Caption:=Frm_Sfc_MnRequest1.tmp_DeptCode;
lbl_qty.Caption:=AdoQry_Head.fieldbyname('moqty').asstring;
lbl_Noqty.Caption:=AdoQry_Head.fieldbyname('MoNoFinishqty').asstring;
medt_Date.text:=LoginDate;
oldWhPosition:='#@%^';
oldwhCode:='#@%^';
oldEmployee:='#@%^';
MoLinestatus:=AdoQry_Head.fieldbyname('MoLinestatus').asinteger;
IOType:=0;
//DBGRID只允许请领数量,批次号,备注可以更改
if status='ReadOnly' then
begin
cmbbx_WhCode.Enabled:=True;
cmbbx_WhPositionCode.Enabled:=True ;
cmbbx_WhEmployee.Enabled :=True;
medt_Date.Enabled:=True;
dbgrideh.ReadOnly :=True;
dbgrideh.Columns[7].ReadOnly:=True;
dbgrideh.Columns[8].ReadOnly:=True;
dbgrideh.Columns[9].ReadOnly:=True;
Act_auto.Enabled :=False;
act_New.Enabled:=False;
checkbox1.enabled:=True;
checkbox2.enabled:=True;
checkbox3.enabled:=True;
end
else
begin
Act_auto.Enabled :=True;
dbgrideh.ReadOnly :=False;
dbgrideh.Columns[0].ReadOnly:=True;
dbgrideh.Columns[1].ReadOnly:=True;
dbgrideh.Columns[2].ReadOnly:=True;
dbgrideh.Columns[3].ReadOnly:=True;
dbgrideh.Columns[4].ReadOnly:=True;
dbgrideh.Columns[5].ReadOnly:=True;
dbgrideh.Columns[6].ReadOnly:=True;
dbgrideh.Columns[7].ReadOnly:=False;
dbgrideh.Columns[8].ReadOnly:=False;
dbgrideh.Columns[9].ReadOnly:=False;
// dbgrideh.Columns[10].ReadOnly:=False;
{ dbgrideh1.ReadOnly :=False;
dbgrideh1.Columns[0].ReadOnly:=True;
dbgrideh1.Columns[1].ReadOnly:=True;
dbgrideh1.Columns[2].ReadOnly:=True;
dbgrideh1.Columns[3].ReadOnly:=True;
dbgrideh1.Columns[4].ReadOnly:=True;
dbgrideh1.Columns[5].ReadOnly:=True;
dbgrideh1.Columns[6].ReadOnly:=True;
dbgrideh1.Columns[7].ReadOnly:=False;
dbgrideh1.Columns[8].ReadOnly:=False;
dbgrideh1.Columns[9].ReadOnly:=False;
}
// dbgrideh1.Columns[10].ReadOnly:=False;
end;
// initUsablewhcmbx(AdoQry_tmp,userCode,cmbbx_WhCode,False);
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:= ' select WhAccessCtrl.WHCode,WHName '
+' from WHAccessCtrl '
+' join Warehouse on WhAccessCtrl.WhCode=Warehouse.WhCode '
+' where WhAccessCtrl.EmployeeCode='+QuotedSTr(userCode)
+' and ( ( WhAccessCtrl.WhCode In (select Distinct WhCode from CurrentInv '
+' where ItemCode in (select distinct ItemCode from MnItemList '
+' where MoNo='''+Trim(AdoQry_Head.fieldbyname('MoNo').AsString)+''''
+' And MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''') )'
+' ) '
+' or ( WhAccessCtrl.WhCode In (select Distinct WhCode from Item '
+' where ItemCode in (select distinct ItemCode from MnItemList '
+' where MoNo='''+Trim(AdoQry_Head.fieldbyname('MoNo').AsString)+''''
+' And MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''') )'
+' ) )';
AdoQry_Tmp.Open;
CmbBx_WhCode.clear;
While Not AdoQry_Tmp.Eof Do
begin
CmbBx_WhCode.Items.Add(AdoQry_Tmp.fieldbyname('WhCode').AsString+' '+AdoQry_Tmp.fieldbyname('WhName').AsString);
AdoQry_Tmp.Next;
end;
CmbBx_WhCode.ItemIndex:=0;
tmp_Status:='Change';
cmbbx_WhCodeexit(cmbbx_WhCode);
InitShiftCmBx(AdoQry_tmp,cmbbx_Shift,True);
InitCmBxText(cmbbx_Shift,Frm_Sfc_MnRequest1.tmp_MoRequestshift);
end;
procedure TFrm_Sfc_MnRequest_B1.SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String);
begin//指明当前状态,定义Enable=True的控件
inherited;
if CurrentStatus='Add' then
begin
EnableControls:='';
end
else
EnableControls:='';
end;
procedure TFrm_Sfc_MnRequest_B1.checkBodyIOType;
begin
if IoType<>0 then
if AdoQry_Body.fieldbyname('moRequestqty').asfloat*IoType<0 then
begin
DispInfo('同一请领,不能出现正负数量混合的情况!',1);
abort;
end;
end;
procedure TFrm_Sfc_MnRequest_B1.checkswApIOType;
begin
if IoType<>0 then
if AdoQry_SwAp.fieldbyname('moRequestqty').asfloat*IoType<0 then
begin
DispInfo('同一请领,不能出现正负数量混合的情况!',1);
abort;
end;
end;
procedure TFrm_Sfc_MnRequest_B1.checkcoCurrentqty;
begin
//如果是结构虚项,则不允录入数据
if AdoQry_Body.fieldbyname('alterNative').asinteger>0 then
begin
if (AdoQry_Body.fieldbyname('moRequestqty').asstring)<>'' then
begin
DispInfo('不允许录入数据!',1);
dbgrideh.SetFocus ;
abort;
end;
end
{ else if (copy(AdoQry_Body.fieldbyname('tmpItemCode').asstring,1,1)='-') then
begin
//如果是替代虚项,则在下面一个DBGRID中录入数据
if AdoQry_SwAp.state in [dsBrowse] then
begin
DispInfo('请在下面的数据窗格中维护替代件的请领数据!',1);
dbgrideh.SetFocus ;
abort;
end;
end
} else
begin
if AdoQry_Body.fieldbyname('moRequestqty').asstring='' then
begin
DispInfo('当前数量不能为空!',1);
dbgrideh.SetFocus ;
abort;
end;
//如果物料是限额领料控制
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add('select limitout from Item where ItemCode='''+AdoQry_Body.fieldbyname('tmpItemCode').asstring+'''');
open;
if fieldbyname('limitout').asinteger=1 then
begin
if AdoQry_Body.fieldbyname('moRequestqty').asfloat>
(AdoQry_Body.fieldbyname('moCtrlqty').asinteger-
AdoQry_Body.fieldbyname('MoRealqty').asfloat)
then
begin
DispInfo('请领数量不能超过实际未领数量!',1);
dbgrideh.SetFocus ;
abort;
end;
end
else
begin
end;
end;
// 如果请领数量<0,在“冲销的数量不能大于累计领料数量”前,检查累计领料数量是否大于限额领料数量,是则提示“请先使用“超订单领料”进行冲销!”
if (AdoQry_Body.fieldbyname('moRequestqty').asfloat<0) then
begin
if AdoQry_Body.fieldbyname('moCtrlqty').asinteger<AdoQry_Body.fieldbyname('MoRealqty').asfloat then
begin
DispInfo('请先使用“超订单领料”进行冲销!',1);
dbgrideh.SetFocus ;
abort;
end;
end;
if (AdoQry_Body.fieldbyname('moRequestqty').asfloat<0) and
(((-1)*AdoQry_Body.fieldbyname('moRequestqty').asfloat)>AdoQry_Body.fieldbyname('MoRealqty').asfloat)
then
begin
DispInfo('冲销的数量不能大于累计领料数量!',1);
dbgrideh.SetFocus ;
abort;
end;
if AdoQry_Body.fieldbyname('moRequestqty').asfloat>AdoQry_Body.fieldbyname('onhandInv').asfloat then
begin
DispInfo('当前可用库存是:'+AdoQry_Body.fieldbyname('onhandInv').asstring,1);
dbgrideh.SetFocus ;
abort;
end;
end;
end;
procedure TFrm_Sfc_MnRequest_B1.DBGridEhKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
tmp_WhCode,tmp_WhPositionCode:string;
begin
// inherited;
if key=vk_return then
keybd_event(vk_tab,vk_tab,0,0);
if (AdoQry_Body.State in [dsEdit, dsInsert]) and (key=vk_F9) then
begin
tmp_WhCode:=getCode(cmbbx_WhCode.text);
tmp_WhPositionCode:=getCode(cmbbx_WhPositionCode.text);
AdoQry_Body.fieldbyname('Batchno').asstring:=BatchHint(AdoQry_tmp.Connection,AdoQry_Body.fieldbyname('ItemCode').asstring,'',tmp_WhCode,tmp_WhPositionCode);
end;
end;
procedure TFrm_Sfc_MnRequest_B1.AdoQry_BodyBeforePost(DataSet: TDataSet);
var
tmp_WhCode,tmp_WhPositionCode:string;
begin
inherited;
if AdoQry_Body.fieldbyname('moRequestqty').asstring='' then
AdoQry_Body.fieldbyname('moRequestqty').asstring:='0';
//进行同向检验及数量库存检验
if (AdoQry_Body.fieldbyname('moRequestqty').asfloat<>0) then
begin
checkbodyIOType;
checkcoCurrentqty;
end;
if (AdoQry_SwAp.State in [dsBrowse]) and (AdoQry_Body.fieldbyname('alterNative').asinteger=1) then
begin
AdoQry_Body.fieldbyname('moRequestqty').asfloat:=oldbodymoRequestqty;
end;
if (AdoQry_Body.fieldbyname('alterNative').asinteger<>1) and
(AdoQry_Body.fieldbyname('alterNative').asinteger<>2) then
begin
//批次号控制
if (not BatchCtrl(AdoQry_tmp,AdoQry_Body.fieldbyname('ItemCode').asstring)) then
begin
if (AdoQry_Body.fieldbyname('Batchno').asstring<>'') then
begin
DispInfo('该物料不受批次控制,不能录入批次号',1);
AdoQry_Body.fieldbyname('Batchno').asstring:='';
dbgrideh.setfocus;
abort;
end
end;
if (BatchCtrl(AdoQry_tmp,AdoQry_Body.fieldbyname('ItemCode').asstring)) and
((AdoQry_Body.fieldbyname('moRequestqty').asstring<>'0') and
(AdoQry_Body.fieldbyname('moRequestqty').asstring<>'')) then
begin
if (AdoQry_Body.fieldbyname('Batchno').asstring='') then
begin
DispInfo('请录入批次号',1);
dbgrideh.setfocus;
abort;
end
else
begin
if not BatchNoCheck(AdoQry_tmp,AdoQry_Body.fieldbyname('Batchno').asstring,AdoQry_Body.fieldbyname('ItemCode').asstring,'',medt_Date.text) then
begin
dbgrideh.setfocus;
abort;
end
else
begin
tmp_WhCode:=getCode(cmbbx_WhCode.text);
tmp_WhPositionCode:=getCode(cmbbx_WhPositionCode.text);
//批次库存控制
if not BatchInvCheck(AdoQry_tmp,AdoQry_Body.fieldbyname('Batchno').asstring,'C',tmp_WhCode,tmp_WhPositionCode,AdoQry_Body.fieldbyname('moRequestqty').asfloat) then
begin
dbgrideh.setfocus;
abort;
end;
end;
end;
end
else
begin
AdoQry_Body.fieldbyname('Batchno').asstring:='';
end;
end;
end;
procedure TFrm_Sfc_MnRequest_B1.DBGridEhColExit(Sender: TObject);
var
tmp_WhCode,tmp_WhPositionCode:string;
begin
inherited;
if (AdoQry_Body.State in [dsEdit, dsInsert])
and (dbgrideh.SelectedField.fieldName='moRequestqty')
then
begin
checkbodyIOType;
checkcoCurrentqty;
end;
if (AdoQry_Body.State in [dsEdit, dsInsert])
and (dbgrideh.SelectedField.fieldName='Batchno')
then
begin
if AdoQry_Body.fieldbyname('alterNative').asinteger=1 then
begin
DispInfo('替代虚项不能录入批次号!',1);
AdoQry_Body.fieldbyname('Batchno').asstring:='';
dbgrideh.SetFocus;
abort;
end;
if AdoQry_Body.fieldbyname('alterNative').asinteger=2 then
begin
DispInfo('结构虚项不能录入批次号!',1);
AdoQry_Body.fieldbyname('Batchno').asstring:='';
dbgrideh.SetFocus;
abort;
end;
if (not BatchCtrl(AdoQry_tmp,AdoQry_Body.fieldbyname('ItemCode').asstring)) then
begin
if (dbgrideh.SelectedField.Value<>'') then
begin
DispInfo('该物料不受批次控制,不能录入批次号',1);
dbgrideh.setfocus;
abort;
end
end;
if (BatchCtrl(AdoQry_tmp,AdoQry_Body.fieldbyname('ItemCode').asstring)) and
((AdoQry_Body.fieldbyname('moRequestqty').asstring<>'0') and
(AdoQry_Body.fieldbyname('moRequestqty').asstring<>'')) then
begin
if (dbgrideh.SelectedField.Value='') or
(dbgrideh.SelectedField.Value=Null) then
begin
DispInfo('请录入批次号',1);
dbgrideh.setfocus;
abort;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -