📄 pm_enter_po_d.pas
字号:
unit Pm_Enter_Po_D;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Detail, Db, AdODB, ExtCtrls, StdCtrls, Mask, ExtEdit;
Type
TFrm_Pm_Enter_Po_D = Class(TFrm_Base_Entry_Detail)
Label1: TLabel;
Edt_LineNo: TEdit;
Label2: TLabel;
Lbl_UomName: TLabel;
Label3: TLabel;
Label4: TLabel;
Edt_PoQty: TEdit;
Label5: TLabel;
Label6: TLabel;
Edt_PoTaxPrice: TEdit;
Label7: TLabel;
Edt_PoTaxAmount: TEdit;
Label8: TLabel;
Edt_PoNoTaxPrice: TEdit;
Label9: TLabel;
Edt_PoNoTaxAmount: TEdit;
Label10: TLabel;
Medt_PoDate: TMaskEdit;
MEdt_PoStArtWorkDate: TMaskEdit;
Lbl_ItemName: TLabel;
Edt_ItemCode: TExtEdit;
procedure btn_okClick(Sender: TObject);
procedure Edt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_ItemCodeExit(Sender: TObject);
procedure Medt_PoDateExit(Sender: TObject);
procedure FloatCheck(Sender: TObject);
procedure DateCheck(Sender: TObject);
private
POREFERENCEDPRICE:Integer;//是否参考价
MnldTime:Integer;//物料交货提前期
PcNo:String;
PcType:Integer;
PoStArtWorkDate:String;
{ Private declarations }
public
tmppoqty:string;
LineNo : Integer;
procedure InitControls;Override;
procedure SaveBodyData;Override;
procedure SetStatus(CurrentStatus:String;var EnableControls:String);Override;
procedure SetFormParam(FrmParam1,FrmParam2,FrmParam3,FrmParam4,FrmParam5,FrmParam6:String);Override;
{ Public declarations }
end;
var
Frm_Pm_Enter_Po_D: TFrm_Pm_Enter_Po_D;
implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Pm_Enter_Po_D.SetFormParam(FrmParam1,FrmParam2,FrmParam3,FrmParam4,FrmParam5,FrmParam6:String);
begin
PcNo:=FrmParam1;
PcType:=StrToInt(FrmParam2);
end;
procedure TFrm_Pm_Enter_Po_D.InitControls;
var
SqlText:String;
begin
If (Status='Add') Then
SetFocus_Control:=Edt_ItemCode
Else
SetFocus_Control:=Edt_PoQty;
Inherited;
with AdoQry_Body do
begin
If (Status='Add') Then
begin
Edt_ItemCode.Enabled:=True;
Inc(LineNo);
Edt_LineNo.Text:=IntToStr(LineNo);
MEdt_PoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
MEdt_PoStArtWorkDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
PoStArtWorkDate:=FormatDateTime('yyyy.mm.dd',Date);
// 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)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
MnldTime:=AdoQry_Tmp.fieldbyname('MnldTime').AsInteger;
end
Else
begin
// 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)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
MnldTime:=AdoQry_Tmp.fieldbyname('MnldTime').AsInteger;
Edt_ItemCode.Enabled:=False;
LineNo := fieldbyname('PoLineNo').AsInteger;
Edt_LineNo.Text:=IntToStr(fieldbyname('PoLineNo').AsInteger);
Medt_PoDate.Text:=Formatdatetime('yyyy.mm.dd',fieldbyname('PoLineDate').AsDateTime);
Medt_PoStArtWorkDate.Text:=Formatdatetime('yyyy.mm.dd',fieldbyname('PoStArtWorkDate').AsDateTime);
PoStArtWorkDate:=Formatdatetime('yyyy.mm.dd',fieldbyname('PoStArtWorkDate').AsDateTime);
end;
POREFERENCEDPRICE:=fieldbyname('POREFERENCEDPRICE').AsInteger;
Lbl_UomName.Caption:=fieldbyname('UomName').AsString;
Edt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
Lbl_ItemName.Caption:=fieldbyname('ItemName').AsString;
Edt_PoQty.Text:=FormatFloat('##0.####',fieldbyname('PoQty').AsFloat);
tmppoqty:=edt_Poqty.Text;
Edt_PoTaxPrice.Text:=FormatFloat('##0.####',fieldbyname('PoTaxPrice').AsFloat);
Edt_PoTaxAmount.Text:=FormatFloat('##0.####',fieldbyname('PoTaxAmount').AsFloat);
Edt_PoNoTaxPrice.Text:=FormatFloat('##0.####',fieldbyname('PoNoTaxPrice').AsFloat);
Edt_PoNoTaxAmount.Text:=FormatFloat('##0.####',fieldbyname('PoNoTaxAmount').AsFloat);
end;
end;
procedure TFrm_Pm_Enter_Po_D.SetStatus(CurrentStatus:String;var EnableControls:String);
var sqltext:string;
begin
inherited;
If (CurrentStatus='Add') Then
EnableControls:='Edt_ItemCode,Edt_PoQty,Medt_PoDate,MEdt_PoStArtWorkDate,'
Else
EnableControls:=iifstring(AdoQry_Body.fieldbyname('polinestatus').asinteger=6,'','Edt_PoQty,')+'Medt_PoDate,MEdt_PoStArtWorkDate,';
if CurrentStatus<>'Add' then
begin
if AdoQry_Body.fieldbyname('porealinqty').asfloat>0 then
begin
edt_Poqty.Enabled:=False;
exit;
end;
if AdoQry_Body.fieldbyname('poinqty').asfloat>0 then
begin
edt_Poqty.Enabled:=False;
exit;
end;
sqltext:='select sum(isnull(porealqty,0)) as porealqty from opItemList'
+' where pono='+quotedstr(AdoQry_Body.fieldbyname('pono').asstring)
+' and polineno='+AdoQry_Body.fieldbyname('polineno').asstring;
Executesql(AdoQry_tmp,sqltext,0);
if AdoQry_tmp.fieldbyname('porealqty').asfloat>0 then
begin
edt_Poqty.Enabled:=False;
exit;
end;
enablecontrols:=enablecontrols+'Edt_PoQty,';
end;
end;
procedure TFrm_Pm_Enter_Po_D.SaveBodyData;
var
SqlText:String;
begin
Inherited;
SqlText:=' Select Case when PcLine.FormalPricePass=1 then PcLine.PcTaxPrice_Formal '
+' else PcLine.PcTaxPrice '
+' end as PcTaxPrice, '
+' Case When PcLine.FormalPricePass=1 then PcLine.PcNoTaxPrice_Formal '
+' else PcLine.PcNoTaxPrice '
+' end as PcNoTaxPrice, '
+' Case When PcLine.FormalPricePass=1 then 0 '
+' else 1 end as 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('你所输入的物料代码在相应的采购合同中找不到相应的单价,不能保存!',1);
Btn_Ok.Enabled:=False;
If Status='Add' Then
Edt_ItemCode.SetFocus
Else
Edt_PoQty.SetFocus;
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;
with AdoQry_Body do
begin
fieldbyname('POREFERENCEDPRICE').AsInteger:=POREFERENCEDPRICE;
fieldbyname('PoLineNo').AsInteger:=StrToInt(Trim(Edt_LineNo.Text));
fieldbyname('ItemCode').AsString:=Trim(Edt_ItemCode.Text);
fieldbyname('ItemName').AsString:=Lbl_ItemName.Caption;
fieldbyname('UomName').AsString:=Lbl_UomName.Caption;
fieldbyname('PoStArtWorkDate').Asdatetime:=strtodatetime(Medt_PoStArtWorkDate.Text);
fieldbyname('PoLineDate').Asdatetime:=strtodatetime(Medt_PoDate.Text);
fieldbyname('PoQty').AsFloat:=strtofloat(Trim(Edt_PoQty.Text));
If (Status='Add') Then
begin
fieldbyname('PoLineCheck').AsInteger := 1;
fieldbyname('PoLineStatus').AsInteger:=5;
end;
fieldbyname('PoTaxPrice').AsFloat:=strtofloat(Trim(Edt_PoTaxPrice.Text));
fieldbyname('PoTaxAmount').AsFloat:=strtofloat(Trim(Edt_PoTaxAmount.Text));
fieldbyname('PoNoTaxPrice').AsFloat:=strtofloat(Trim(Edt_PoNoTaxPrice.Text));
fieldbyname('PoNoTaxAmount').AsFloat:=strtofloat(Trim(Edt_PoNoTaxAmount.Text));
fieldbyname('PoNoFinishQty').AsFloat:=strtofloat(Trim(Edt_PoQty.Text));
if (fieldbyname('polinestatus').asinteger=6) and (edt_Poqty.Enabled=True ) and (edt_Poqty.Text<>tmppoqty) then
begin
// fieldbyname('mnldtime').asinteger:=-10;
fieldbyname('polinestatus').asinteger:=5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -