📄 pm_enter_po_d.pas
字号:
end;
Post;
end;
end;
procedure TFrm_Pm_Enter_Po_D.btn_okClick(Sender: TObject);
var
I:String;
begin
If (Status='Add') Then
begin
If AdoQry_Body.RecordCount>0 Then
begin
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If (Trim(Edt_ItemCode.Text)=Trim(AdoQry_Body.fieldbyname('ItemCode').AsString))
And (StrToDateTime(MEdt_PoDate.Text)=AdoQry_Body.fieldbyname('PoLineDate').AsDateTime) Then
begin
DispInfo('你不能输入两笔相同(物料代码+约定交货日)的记录!',3);
Btn_Ok.Enabled:=False;
Edt_ItemCode.SelectAll;
Edt_ItemCode.SetFocus;
Abort;
end;
AdoQry_Body.Next;
end; //end while
end; //end if
end; //end (Add)
If (Status<>'Add') Then
begin
I:=AdoQry_Body.BookmArk;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If (Trim(Edt_ItemCode.Text)=Trim(AdoQry_Body.fieldbyname('ItemCode').AsString))
And (StrToDateTime(MEdt_PoDate.Text)=AdoQry_Body.fieldbyname('PoLineDate').AsDateTime)
And (I<>AdoQry_Body.BookmArk) Then
begin
DispInfo('你不能输入两笔相同(物料代码+约定交货日)的记录!',3);
Btn_Ok.Enabled:=False;
Edt_ItemCode.SelectAll;
Edt_ItemCode.SetFocus;
Close;
Abort;
end;
AdoQry_Body.Next;
end; //end while
AdoQry_Body.BookmArk:=I;
end;
inherited;
end;
procedure TFrm_Pm_Enter_Po_D.Edt_ItemCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
If (Key=120) Then
If PcType<>1 Then
CommonHint(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode',
'物料代码','Item',' Item.ItemCode In (Select ItemCode From PcLine Where PcLine.PcNo='''+PCNo+''') And Item.PmCode=1')
Else
CommonHint(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode',
'物料代码','Item',' Item.ItemCode In (Select ItemCode From PcLine Where PcLine.PcNo='''+PCNo+''') And Item.PmCode In (2,3)');
end;
procedure TFrm_Pm_Enter_Po_D.Edt_ItemCodeExit(Sender: TObject);
var
SqlText:String;
begin
Inherited;
if Activecontrol.Name='btn_Cancel' Then
Exit;
SqlText:=' Select * from Item where ItemUsable=1 And ItemCode='''+Trim(Edt_ItemCode.Text)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text :=SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.Eof then
begin
DispInfo('该物料无效,不能输入!',3);
TwinControl(sender).setfocus;
Abort;
end;
If PcType<>1 Then
CommonCodeCheck(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode','物料代码',
'Item',' Item.ItemCode In (Select ItemCode From PcLine Where PcNo='''+PcNo+''') And Item.PmCode=1')
Else
CommonCodeCheck(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode','物料代码',
'Item',' Item.ItemCode In (Select ItemCode From PcLine Where PcNo='''+PcNo+''') And Item.PmCode In (2,3)');
{ SqlText:=' Select Item.ItemName,Uom.UomName,Item.MnldTime '
+' From Item ,Uom '
+' Where Item.UomCode=Uom.UomCode And Item.ItemCode='
+''''+Trim(Edt_ItemCode.Text)+'''';}
// If PcType<>1 Then
SqlText:=' Select Item.ItemName,Uom.UomName,Item.runlt as MnldTime '
+' From Item ,Uom '
+' Where Item.UomCode=Uom.UomCode And Item.ItemCode='
+''''+Trim(Edt_ItemCode.Text)+''''
+' And Item.ItemCode In (Select ItemCode From PcLine Where PcNo='''+PcNo+''')'
+' And Item.PmCode in (1,2,3)';
{ Else
SqlText:=' Select Item.ItemName,Uom.UomName,Item.MnldTime '
+' From Item ,Uom '
+' Where Item.UomCode=Uom.UomCode And Item.ItemCode='
+''''+Trim(Edt_ItemCode.Text)+''''
+' And Item.ItemCode In (Select ItemCode From PcLine Where PcNo='''+PcNo+''')'
+' And Item.PmCode In (2,3)';}
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
Lbl_UomName.Caption:=AdoQry_Tmp.fieldbyname('UomName').AsString;
MnldTime:=AdoQry_Tmp.fieldbyname('MnldTime').AsInteger;
Lbl_ItemName.Caption:=AdoQry_Tmp.fieldbyname('ItemName').AsString;
AdoQry_Tmp.Close;
end;
procedure TFrm_Pm_Enter_Po_D.Medt_PoDateExit(Sender: TObject);
begin
If ActiveControl.Name ='btn_Cancel' Then
Exit;
Try
StrToDateTime(Medt_PoDate.Text);
Except
DispInfo('约定交货日错误,请重新输入!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
If SlCalendar(DbConnect,MEdt_PoDate.Text,0)<>MEdt_PoDate.Text Then
begin
DispInfo(MEdt_PoDate.Text+'不是工作日!',3);
MEdt_PoDate.Text:=SlCalendar(DbConnect,MEdt_PoDate.Text,0);
MEdt_PoDate.SetFocus;
Abort;
end;
If (PoStArtWorkDate<>Trim(SlCalendar(DbConnect,MEdt_PoDate.Text,MnldTime)))
and ((Status='Add') OR (Status='AllEdit')) Then
MEdt_PoStArtWorkDate.Text:=SlCalendar(DbConnect,MEdt_PoDate.Text,MnldTime);
If (StrToDateTime(MEdt_PoStArtWorkDate.Text)<Date())
And ((Status='Add') OR (Status='AllEdit')) Then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=' Select DateDiff(Day,'''+DateTimeToStr(Date)+''','''+MEdt_PoStArtWorkDate.Text+''') As Day1 ';
AdoQry_Tmp.Open;
DispInfo('理论开工日('+MEdt_PoStArtWorkDate.Text+')小于了系统工作日('+DateTimeToStr(Date)+') '+IntToStr(Abs(AdoQry_Tmp.fieldbyname('Day1').AsInteger))+'天!',3);
MEdt_PoStArtWorkDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
PoStArtWorkDate:=Trim(SlCalendar(DbConnect,MEdt_PoDate.Text,MnldTime));
end;
end;
procedure TFrm_Pm_Enter_Po_D.FloatCheck(Sender: TObject);
begin
inherited;
If (Status='Add') And (StrToFloat(Edt_PoQty.Text)<=0 ) Then
begin
DispInfo('增加数据时约定交货量不能小于等于0!',3);
TWincontrol(Sender).SetFocus;
Abort;
end;
Edt_PoQty.Text:=FormatFloat('##0.####',StrToFloat(Edt_PoQty.Text));
end;
procedure TFrm_Pm_Enter_Po_D.DateCheck(Sender: TObject);
var
SqlText:String;
begin
If (ActiveControl.Name='btn_Cancel') Or (ActiveControl.Name='Medt_PoDate') Then
Exit;
inherited;
If SlCalendar(DbConnect,Medt_PoStArtWorkDate.Text,0)<>Medt_PoStArtWorkDate.Text Then
begin
DispInfo(Medt_PoStArtWorkDate.Text+'不是工作日!',3);
Medt_PoStArtWorkDate.Text:=SlCalendar(DbConnect,Medt_PoStArtWorkDate.Text,0);
Medt_PoStArtWorkDate.SetFocus;
Abort;
end; //约定开工日必须是工作日,否则返回前一个工作日
If ((StrToDate(Medt_PoStArtWorkDate.Text)>StrToDate(Medt_PoDate.Text))
Or (StrToDate(Medt_PoStArtWorkDate.Text)<Date()))
And (Status='Add') Then
begin
DispInfo('约定开工日必须为系统工作日与约定交货日之间的日期,请修改!',3);
TWinControl(Sender).SetFocus;
Abort;
end;
If (StrToDate(Medt_PoStArtWorkDate.Text)>StrToDate(Medt_PoDate.Text))
And (Status<>'Add') Then
begin
DispInfo('约定开工日必须小于等于约定交货日,请修改!',3);
TWinControl(Sender).SetFocus;
Abort;
end;
SqlText:=' Select PcLine.PcTaxPrice,PcLine.PcNoTaxPrice,PcLine.PcReferencedPrice '
+' From PcLine '
+' Where ('''+Medt_PoDate.Text +''' >=PcStArtDate '
+' And '''+Medt_PoDate.Text +'''<=PcendDate) '
+' And (('''+Trim(Edt_PoQty.Text)+'''>=PcStArtQty '
+' And '''+Trim(Edt_PoQty.Text)+'''<PcendQty)'
+' Or (PcStArtQty=0 And PcendQty=0))'
+' And (ItemCode='''+Trim(Edt_ItemCode.Text)+''''
+' )And (PcNo='''+PcNo+''')'
+' And (PcLine.PcLineStatus=1)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
DispInfo('你所输入的物料代码在对应的采购合同中找不到相应的单价,请重新输入!',3);
Btn_Ok.Enabled:=False;
If (Status='Add') Then
begin
Edt_ItemCode.SelectAll;
Edt_ItemCode.SetFocus;
end
Else
begin
Edt_PoQty.SetFocus;
end;
Abort;
end
Else
begin
POREFERENCEDPRICE:=AdoQry_Tmp.fieldbyname('PcReferencedPrice').AsInteger;
Edt_PoTaxPrice.Text:=FormatFloat('##0.##',AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat);
Edt_PoTaxAmount.Text:=FormatFloat('##0.##',AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat * StrToFloat(Trim(Edt_PoQty.Text)));
Edt_PoNoTaxPrice.Text:=FormatFloat('##0.##',AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat);
Edt_PoNoTaxAmount.Text:=FormatFloat('##0.##',AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat * StrToFloat(Trim(Edt_PoQty.Text)));
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -