📄 pm_enter_newautopo2.pas
字号:
unit Pm_Enter_NewAutoPo2;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, Mask, ExtPrintReport, linkedit, jpeg;
Type
TFrm_Pm_Enter_NewAutoPo2 = Class(TFrm_Base_Entry_Body)
AdoQry_Head1: TAdoQuery;
DBGridEh1: TDBGridEh;
AdoQry_BodyPONO: TStringField;
AdoQry_BodyPOLINENo: TIntegerField;
AdoQry_BodyItemCode: TStringField;
AdoQry_BodyPOLineDATE: TDateTimeField;
AdoQry_BodyPOQTY: TFloatField;
AdoQry_BodyPONoFinishQty: TFloatField;
AdoQry_BodyPOREFERENCEDPRICE: TIntegerField;
AdoQry_BodyPOLINESTATUS: TIntegerField;
AdoQry_BodyPoNoTaxPrice: TFloatField;
AdoQry_BodyPONoTaxAmount: TBCDField;
AdoQry_BodyPoTaxPrice: TFloatField;
AdoQry_BodyPoTaxAmount: TBCDField;
AdoQry_BodyPOStArtWorkDate: TDateTimeField;
AdoQry_BodyItemName: TStringField;
AdoQry_BodyUomName: TStringField;
AdoQry_Temp: TAdoQuery;
Label8: TLabel;
Lbl_LineNo: TLabel;
Label13: TLabel;
Lbl_ItemFlag: TLabel;
Label15: TLabel;
Lbl_PoQty: TLabel;
AdoQry_BodyMaxQty: TFloatField;
AdoQry_BodyLimItOut: TIntegerField;
AdoQry_BodySsId: TIntegerField;
AdoQry_BodySsQty: TFloatField;
Label1: TLabel;
Edt_PoNo: TEdit;
Label2: TLabel;
MEdt_PoDate: TMaskEdit;
Label3: TLabel;
Edt_PcNo: TLinkEdit;
Label9: TLabel;
Edt_Potax: TEdit;
Label5: TLabel;
Cmbx_PoType: TComboBox;
Edt_CurrencyName: TEdit;
Edt_CurrencyCode: TEdit;
Label7: TLabel;
Edt_BuyerName: TEdit;
Edt_EmployeeCode: TLinkEdit;
Label6: TLabel;
Label4: TLabel;
Edt_VendorCode: TEdit;
Edt_VendorName: TEdit;
Label11: TLabel;
Edt_PoRemArk: TEdit;
edt_rno: TEdit;
Label12: TLabel;
procedure Act_QuitExecute(Sender: TObject);
procedure Act_SaveExecute(Sender: TObject);
procedure Edt_MoRemArkExit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure PcCodeCheck(Sender: TObject);
procedure Edt_PcNoExit(Sender: TObject);
procedure Edt_PcNoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_EmployeeCodeExit(Sender: TObject);
procedure DataSourceDataChange(Sender: TObject; Field: TField);
procedure Act_ExcelExecute(Sender: TObject);
procedure Act_InsertLineExecute(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure Edt_PcNoButtonClick(Sender: TObject);
private
CurrentPcNo:String;//当前采购价格单号
CurrentFormStatus:String;//当前窗体状态
Function SavePoHistory(Status:String):Boolean;//保存历史记录
Function SavePoLineHistory(Status:String):Boolean;//保存历史记录
function updatessreMainqty(ItemCode:string;sid,eid:integer;poqty:real;istmp:integer):boolean;
function updatec_Ss4reMainqty(ItemCode:string;sid,eid:integer;poqty:real):boolean;
{ Private declarations }
public
procedure InitControls; Override;
procedure SetFormParam(FrmParam1,FrmParam2,FrmParam3,FrmParam4,FrmParam5,FrmParam6:String);Override;
procedure InitForm(AdOConnection:TAdOConnection;FormStatus:String;
AdoQuery:TAdoQuery);Override;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String);Override;
{ Public declarations }
end;
var
Frm_Pm_Enter_NewAutoPo2: TFrm_Pm_Enter_NewAutoPo2;
implementation
uses Sys_Global, Pm_Enter_AutoPo_D, Pm_Enter_Po_P, Pm_Enter_NewSsPoInfo,
Pm_Enter_NewSsPoInfo1, Pm_Enter_NewSsPoInfo2, Pm_Enter_NewSsPoInfo3,
Pm_Enter_NewSsPoInfo4, Mrp_Global;
{$R *.DFM}
procedure TFrm_Pm_Enter_NewAutoPo2.SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String);
begin
Inherited;
if Currentstatus='Add' then
begin
AnswerStatus:='Add';
EnableControls:=' MEdt_PoDate,Edt_PcNo,edt_rno,Cmbx_PoType,Edt_EmployeeCode,Edt_PoRemArk,';
end;
If Pos('Edit',Currentstatus)>0 then
begin
AnswerStatus:='PArtEdit';
EnableControls:='MEdt_PoDate,Edt_EmployeeCode,edt_rno,Edt_PoRemArk,';
end;
end;
function checksymbol(Source:string;disptext:string):boolean; //检查输入中是否有单引号
var
i:integer;
s:string;
begin
s:=Trim(Source);
for i:=1 to length(s) do
if s[i]='''' then
begin
DispInfo(disptext+'中不能使用单引号!',1);
Result:=False;
exit;
end;
Result:=True;
end;
Function TFrm_Pm_Enter_NewAutoPo2.SavePoHistory(Status:String):Boolean;
var
SqlText:String;
begin
Try
SqlText:='Insert PoHistory '
+' (PoNo,VendorCode,PcNO,referenceno,POType,PODate,'
+' POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,PORemArk,PoChgEmployeeCode,PoChgTime,PoChgType)'
+' Values('
+''''+Trim(Edt_PoNo.Text)+''''+','
+''''+Trim(Edt_VendorCode.Text)+''''+','
+''''+Trim(Edt_PcNo.Text)+''''+','
+quotedstr(Trim(edt_rno.text))+','
+''''+IntToStr(Cmbx_PoType.ItemIndex)+''''+','
+''''+Medt_PoDate.Text+''''+','
+''''+Trim(Edt_PoTax.Text)+''''+','
+''''+Trim(Edt_CurrencyCode.Text)+''''+','
+''''+Trim(Edt_EmployeeCode.Text)+''''+','
+''''+'0'+''''+','
+''''+Trim(Edt_PoReMArk.Text)+''''+','
+''''+UserCode+''''+','
+'GetDate(),';
IF Status='Add' Then
SqlText:=SqlText+''''+'增加'+''''+')'
Else
SqlText:=SqlText+''''+'修改'+''''+')';
AdoQry_Tmp.Close;
AdoQry_Tmp.Sql.Text:=Sqltext;
AdoQry_Tmp.ExecsQl;
Result:=True;
Except
Result:=False;
end;
end;
Function TFrm_Pm_Enter_NewAutoPo2.SavePoLineHistory(Status:String):Boolean;
var
SqlText:String;
begin
Try
SqlText:='Insert PoLineHistory '
+' (PoNo,PoLineNo,ItemCode,POLineDate,PoStArtWorkDate,POQty,POTaxPrice,POTaxAmount,PONoTaxPrice,'
+' PONoTaxAmount,PONoFinishQty,POReferencedPrice,POLineStatus,PolChgEmployeeCode,PolChgTime,PolChgType)'
+'Values('
+''''+Trim(Edt_PoNo.Text)+''''+','
+''''+IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger)+''''+','
+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''+','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime)+''''+','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxPrice').AsFloat)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxAmount').AsFloat)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxPrice').AsFloat)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxAmount').AsFloat)+''''+','
+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoFinishQty').AsFloat)+''''+','
+''''+IntToStr(AdoQry_Body.fieldbyname('POReferencedPrice').AsInteger)+''''+','
+''''+IntToStr(AdoQry_Body.fieldbyname('POLineStatus').AsInteger)+''''+','
+''''+UserCode+''''+','
+'GetDate(),';
IF Status='Add' Then
SqlText:=SqlText+''''+'增加'+''''+')'
Else
SqlText:=SqlText+''''+'修改'+''''+')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
Result:=True;
Except
Result:=False;
end;
end;
procedure TFrm_Pm_Enter_NewAutoPo2.InitForm(AdOConnection:TAdOConnection;FormStatus:String;AdoQuery:TAdoQuery);
var
SqlText:String;
I:Integer;
begin
Inherited;
PriceFields:='PoNoTaxPrice,PONoTaxAmount,PoTaxPrice,PoTaxAmount,';
SqlText:='Select Top 0 Poline.*,Poline.SsQty as maxQty,Item.LimItOut as Ssid,Item.GreateOut as endSsid,Item.ItemName,Uom.UomName '
+' From PoLine '
+' Join Item On Poline.ItemCode=Item.ItemCode '
+' Left Join Uom On Item.UomCode=Uom.UomCode';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
AdoQuery.First;
I:=1;
While Not AdoQuery.Eof Do
begin
If AdoQuery.fieldbyname('SScheck').AsInteger=1 Then
begin
Edt_EmployeeCode.Text := AdoQuery.fieldbyname('EmployeeCode').AsString;
Edt_BuyerName.Text := AdoQuery.fieldbyname('EmployeeName').AsString;
AdoQry_Body.Append;
AdoQry_Body.fieldbyname('PoLineNo').AsInteger:=I;
AdoQry_Body.fieldbyname('Ssid').AsInteger:=AdoQuery.fieldbyname('SsId').AsInteger;
AdoQry_Body.fieldbyname('endSsid').AsInteger:=AdoQuery.fieldbyname('endSsId').AsInteger;
AdoQry_Body.fieldbyname('ItemCode').AsString:=AdoQuery.fieldbyname('ItemCode').AsString;
AdoQry_Body.fieldbyname('ItemName').AsString:=AdoQuery.fieldbyname('ItemName').AsString;
AdoQry_Body.fieldbyname('UomName').AsString:=AdoQuery.fieldbyname('UomName').AsString;
AdoQry_Body.fieldbyname('SsQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
AdoQry_Body.fieldbyname('MaxQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
AdoQry_Body.fieldbyname('PoQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
AdoQry_Body.fieldbyname('PoLineStatus').AsInteger:=5;
if AdoQuery.fieldbyname('ssDate').AsDateTime > date() then
AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:=AdoQuery.fieldbyname('ssDate').AsDateTime
else
AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:= date();
if AdoQuery.fieldbyname('DueDate').AsDateTime > date() then
AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime:=AdoQuery.fieldbyname('DueDate').AsDateTime
else
AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime:=Date();
AdoQry_Body.fieldbyname('PoTaxPrice').AsFloat:=0;
AdoQry_Body.fieldbyname('PoNoTaxPrice').AsFloat:=0;
AdoQry_Body.fieldbyname('PoReferencedPrice').AsFloat:=0;
AdoQry_Body.fieldbyname('PoTaxAmount').AsFloat:=0;
AdoQry_Body.fieldbyname('PoNoTaxAmount').AsFloat:=0;
AdoQry_Body.Post;
I:=I+1;
end;
AdoQuery.Next;
end;
DataSource.DataSet:=AdoQry_Body;
If FormStatus='Add' Then
begin
CurrentFormStatus:='Add';
SetFocus_Control:=MEdt_PoDate;
end;
end;
procedure TFrm_Pm_Enter_NewAutoPo2.InitControls;
begin
If Status='Add' Then
begin
SetFocus_Control:=MEdt_PoDate;
end;
inherited;
Edt_PoNo.Enabled:=False;
If Status='Add' Then
MEdt_Podate.Text:=Formatdatetime('yyyy.mm.dd',date);
Edt_PoNo.Enabled:=False;
edt_rno.Enabled:=True;
Edt_VendorCode.Enabled:=False;
Edt_CurrencyCode.Enabled:=False;
Edt_CurrencyName.Enabled:=False;
Edt_Potax.Enabled:=False;
Act_Preview.Enabled:=False;
Act_Print.Enabled:=False;
Cmbx_PoType.Enabled:=True;
Act_Save.Enabled:=True;
Edt_BuyerName.Enabled:=False;
Edt_VendorName.Enabled:=False;
Edt_PcNo.Enabled:=True;
end;
procedure TFrm_Pm_Enter_NewAutoPo2.Act_QuitExecute(Sender: TObject);
begin
Close;
end;
procedure TFrm_Pm_Enter_NewAutoPo2.Act_SaveExecute(Sender: TObject);
var
SqlText,PoNo,BookMArk:String;
I:Integer;
TemppoQty:double;
begin
Edt_PcNo.OnExit(Edt_PcNo);
Edt_EmployeeCode.OnExit(Edt_EmployeeCode);
If AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',3);
Abort;
end;
AdoQry_Body.DisableControls;
AdoQry_Body.First;
I:=1;
While Not AdoQry_Body.Eof Do
begin
If StrToFloat(FormatFloat('##0.##',AdoQry_Body.fieldbyname('PoQty').AsFloat))<=0 Then
begin
DispInfo('第'+IntToStr(I)+'行数据的约定交货量小于等于了0,不能保存!',3);
AdoQry_Body.EnableControls;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -