pm_enter_newfreepo.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 752 行 · 第 1/2 页
PAS
752 行
AdoQry_Tmp.Close;
If CurrentFormStatus='Add' Then
begin
PoNO:='P'+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),3,2))+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),6,2));
Edt_PoNo.Text:=GetNo(DbConnect,PoNo,'Po');
Application.ProcessMessages;
SqlText:='Insert Po '
+' (PoNo,VendorCode,PcNO,POType,PODate,'
+' POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,CreateEmpolyeeCode,PORemArk)'
+' Values('
+''''+Trim(Edt_PoNo.Text)+''''+','
+''''+Trim(Edt_VendorCode.Text)+''''+','
+''''+Trim(Edt_PcNo.Text)+''''+','
+''''+IntToStr(Cmbx_PoType.ItemIndex)+''''+','
+''''+Medt_PoDate.Text+''''+','
+''''+Trim(Edt_PoTax.Text)+''''+','
+''''+Trim(Edt_CurrencyCode.Text)+''''+','
+''''+Trim(Edt_EmployeeCode.Text)+''''+','
+''''+'1'+''''+','
+''''+UserCode+''','
+''''+Trim(Edt_PoReMArk.Text)+''''+')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL; // Insert Po Table
If Not SavePoHistory('Add') Then
Abort;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
SqlText:='Insert PoLine '
+' (PoNo,PoLineNo,ItemCode,POLineDate,PoStArtWorkDate,POQty,POTaxPrice, '
+' POTaxAmount,PONoTaxPrice,PONoTaxAmount,PONoFinishQty,POReferencedPrice,POLineStatus )'
+'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)+''''+','
+''''+'5'+''''+')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),'po',1,
Trim(Edt_PoNo.Text),AdoQry_Body.fieldbyname('PoLineNo').AsInteger,AdoQry_Body.fieldbyname('POLINESTATUS').AsInteger,
0,AdoQry_Body.fieldbyname('PoQty').Asfloat,
AdoQry_Body.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Body.fieldbyname('POStArtWorkDate').AsString,
AdoQry_Body.fieldbyname('POLineDATE').AsString,Cmbx_PoType.ItemIndex,Edt_VendorCode.text );
If Not SavePoLineHistory('Add') Then
Abort;
If Cmbx_PoType.ItemIndex=1 Then //委外加工
IF Not AutoBuildOrder(DbConnect,Trim(Edt_PoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),
'Add','Po',AdoQry_Body.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
AdoQry_Body.Next;
end;
end;
If CurrentFormStatus='PArtEdit' Then
begin
SqlText:='Update Po '
+' Set PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
+' VendorCode= '+''''+Trim(Edt_VendorCode.Text)+''''+','
+' PcNo='+''''+Trim(Edt_PcNo.Text)+''''+','
+' POType='+''''+IntToStr(Cmbx_PoType.ItemIndex)+''''+','
+' PoDate='+''''+MEdt_PoDate.Text+''''+','
+' POTaxRate_Percent='+''''+Trim(Edt_PoTax.Text)+''''+','
+' CurrencyCode= '+''''+Trim(Edt_CurrencyCode.Text)+''''+','
+' EmployeeCode= '+''''+Trim(Edt_EmployeeCode.Text)+''''+','
+' PoSpecial= '+''''+'1'+''''+','
+' PoReMArk= '+''''+Trim(Edt_PoRemArk.Text)+''''
+' Where PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
If Not SavePoHistory('Edit') Then
Abort;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
SqlText:=' UpDate PoLine '
+' Set PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
+' PoLineNo='+''''+IntToStr(AdoQry_Body.fieldbyname('POLineNo').AsInteger)+''''+','
+' ItemCode='+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''+','
+' PoLineDate='+''''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime)+''''+','
+' PostArtworkdate='''+DateTimeToStr(AdoQry_Body.fieldbyname('PostArtworkdate').AsDateTime)+''''+','
+' PoQty='+''''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+''''+','
+' PoNoFinishQty='+''''+FloatToStr(AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat)+''''+','
+' POTaxPrice='+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxPrice').AsFloat)+''''+','
+' POTaxAmount='+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxAmount').AsFloat)+''''+','
+' PONoTaxPrice='+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxPrice').AsFloat)+''''+','
+' PONoTaxAmount='+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxAmount').AsFloat)+''''+','
+' POReferencedPrice='''+IntToStr(POReferencedPrice)+''''
+' Where PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
+' And PoLineNo='+''''+AdoQry_Body.fieldbyname('PoLineNO').AsString+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),'po',2,
Trim(Edt_PoNo.Text),AdoQry_Body.fieldbyname('PoLineNo').AsInteger,AdoQry_Body.fieldbyname('POLINESTATUS').AsInteger,
0,AdoQry_Body.fieldbyname('PoQty').Asfloat,
AdoQry_Body.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Body.fieldbyname('POStArtWorkDate').AsString,
AdoQry_Body.fieldbyname('POLineDATE').AsString,Cmbx_PoType.ItemIndex,Edt_VendorCode.text );
If Not SavePoLineHistory('Edit') Then
Abort;
If Cmbx_PoType.ItemIndex=1 Then //委外加工
begin
Executesql(AdoQry_tmp,'delete from opItemList where pono='+quotedstr(Trim(edt_Pono.text))+' and polineno='+IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),1);
IF Not AutoBuildOrder(DbConnect,Trim(Edt_PoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),
'Add','Po',AdoQry_Body.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
end;
AdoQry_Body.Next;
end;
end;
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
DispInfo('数据保存成功!',3);
Except
on e:Exception do
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
Edt_Pono.Text:='';
RecOrderror(Self,AdoQry_tmp,E.message);
DispInfo('保存数据失败,请重试!',1);
Abort;
end ;
end;
SqlText:=' Select Employee.EmployeeName '
+' From Buyer '
+' Left Outer Join Employee On Buyer.EmployeeCode=Employee.EmployeeCode '
+' Where Buyer.EmployeeCode='''+Trim(Edt_EmployeeCode.Text)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If Not AdoQry_Tmp.Eof Then
EmployeeName:=AdoQry_Tmp.fieldbyname('EmployeeName').AsString
Else
EmployeeName:='';
SqlText:=' Select CurrencyName '
+' From Currency '
+' Where CurrencyCode='''+Trim(Edt_CurrencyCode.Text)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If Not AdoQry_Tmp.Eof Then
CurrencyName:=AdoQry_Tmp.fieldbyname('CurrencyName').AsString
Else
CurrencyName:='';
SqlText:=' Select VendorName '
+' From Vendor '
+' Where VendorCode='''+Trim(Edt_VendorCode.Text)+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If Not AdoQry_Tmp.Eof Then
VendorName:=AdoQry_Tmp.fieldbyname('VendorName').AsString
Else
VendorName:='';
With AdoQry_Head Do
begin
fieldbyname('PoNo').AsString:=Trim(Edt_PoNo.Text);
fieldbyname('PoDate').AsDateTime:=StrToDateTime(MEdt_PoDate.Text);
fieldbyname('PcNo').AsString:=Edt_PcNo.Text;
fieldbyname('VendorCode').AsString:=Edt_VendorCode.Text;
fieldbyname('PoType').AsInteger:=Cmbx_PoType.ItemIndex;
fieldbyname('EmployeeCode').AsString:=Edt_EmployeeCode.Text;
fieldbyname('CurrencyCode').AsString:=Edt_CurrencyCode.Text;
fieldbyname('PoSpecial').AsInteger:=1;
fieldbyname('POTaxRate_Percent').AsInteger:=StrToInt(Edt_PoTax.Text);
fieldbyname('PoRemArk').AsString:=Edt_PoRemArk.Text;
fieldbyname('CurrencyName').AsString:=CurrencyName;
fieldbyname('VendorName').AsString:=VendorName;
fieldbyname('EmployeeName').AsString:=EmployeeName;
end;//更新缓存
end;
procedure TFrm_Pm_Enter_NewFreePo.FormCreate(Sender: TObject);
begin
inherited;
ExtendCaption:=False;
Cmbx_PoType.Items.clear;
Cmbx_PoType.Items.Add('0 普通采购');
Cmbx_PoType.Items.Add('1 委外加工');
Cmbx_PoType.Items.Add('2 进口采购');
Cmbx_PoType.ItemIndex:=0;
MEdt_PoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
Frm_Entry_Detail:=TFrm_Pm_Enter_Po_D.Create(Self);
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_SaveExecute(Sender: TObject);
begin
IF (AdoQry_Body.RecordCount=0) Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If (AdoQry_Body.fieldbyname('PoQty').AsFloat<=0) And (Status='Add') Then
begin
DispInfo('记录'+IntToStr(AdoQry_Body.RecNo)+'的约定交货量小于等于了0,请修改!',1);
Abort;
end;
AdoQry_Body.Next;
end;
inherited;
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_PrintExecute(Sender: TObject);
begin
Frm_Pm_Enter_Po_P:=TFrm_Pm_Enter_Po_P.Create(Application);
Frm_Pm_Enter_Po_P.GetDataSource(DbConnect,Trim(Edt_PoNo.Text),'Print',MenuId);
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_PreviewExecute(Sender: TObject);
begin
Frm_Pm_Enter_Po_P:=TFrm_Pm_Enter_Po_P.Create(Application);
Frm_Pm_Enter_Po_P.GetDataSource(DbConnect,Trim(Edt_PoNo.Text),'Preview',MenuId);
end;
procedure TFrm_Pm_Enter_NewFreePo.Edt_PcNoKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
If (key=120) Then
CommOnHint(Sender,AdoQry_Body,'VendorName','供应商名称','PcNo',
'采购价格单号',' Pc,Vendor ',' Pc.VendorCode=Vendor.VendorCode And Pc.PCNo In (Select PcNo From PcLine where pclinestatus=1) ');
end;
procedure TFrm_Pm_Enter_NewFreePo.Edt_PcNoExit(Sender: TObject);
var
SqlText:String;
begin
Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
If (ActiveControl.Name='DBGridEh') Or (ActiveControl.Name='ControlBar') Then
Exit;
If Trim(TEdit(Sender).Text)='' Then
begin
DispInfo('采购价格单号不能为空!',1);
TWincontrol(Sender).SetFocus;
Abort;
end;
SqlText:=' Select Pc.*,Vendor.VendorName,Currency.CurrencyName '
+' From PC,Vendor,Currency '
+' Where PcNo='+''''+Trim(TEdit(Sender).Text)+''''
+' And Currency.CurrencyCode=Pc.CurrencyCode '
+' And Pc.VendorCode=Vendor.VendorCode And Pc.PcNo In (Select PcNo From PcLine Where PclineStatus=1) ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
DispInfo('采购价格单号错误,请重新输入!',1);
TWincontrol(Sender).SetFocus;
Abort;
end;
Edt_VendorName.Text:=AdoQry_Tmp.fieldbyname('VendorName').AsString;
Edt_VendorCode.Text:=AdoQry_Tmp.fieldbyname('VendorCode').AsString;
Edt_CurrencyCode.Text:=AdoQry_Tmp.fieldbyname('CurrencyCode').AsString;
Edt_CurrencyName.Text:=AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
Edt_PoTax.Text:=IntToStr(AdoQry_Tmp.fieldbyname('PcTaxRate_Percent').AsInteger);
Edt_PoRemArk.Text:=AdoQry_Tmp.fieldbyname('RemArk').AsString;
CurrentPcNo:=Trim(Edt_PcNo.Text);
end;
procedure TFrm_Pm_Enter_NewFreePo.DataSourceDataChange(Sender: TObject;
Field: TField);
begin
inherited;
Lbl_ItemFlag.Caption:=AdoQry_Body.fieldbyname('ItemCode').AsString+' '+AdoQry_Body.fieldbyname('ItemName').AsString;
If (Status='Add') And (AdoQry_Body.RecordCount>0) Then
begin
Cmbx_PoType.Enabled:=False;
Edt_PcNo.Enabled:=False;
end;
If (Status='Add') And (AdoQry_Body.RecordCount=0) Then
begin
Cmbx_PoType.Enabled:=True;
Edt_PcNo.Enabled:=True;
end;
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_ExcelExecute(Sender: TObject);
begin
inherited;
DbGridEhToExcel(DbGridEh);
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_InsertLineExecute(Sender: TObject);
begin
Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
inherited;
If (Status='Add') And (AdoQry_Body.RecordCount>0) Then
begin
Cmbx_PoType.Enabled:=False;
Edt_PcNo.Enabled:=False;
end;
If (Status='Add') And (AdoQry_Body.RecordCount=0) Then
begin
Cmbx_PoType.Enabled:=True;
Edt_PcNo.Enabled:=True;
end;
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_ModifyExecute(Sender: TObject);
begin
{ If (AdoQry_Body.fieldbyname('PoLineStatus').AsInteger<>5) Or
(AdoQry_Body.fieldbyname('PoQty').AsFloat<>AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat) Then
begin
DispInfo('本条记录不可以修改',3);
Abort;
end; }
If (AdoQry_Body.fieldbyname('PoLineStatus').AsInteger=7) then
begin
DispInfo('本条记录处于关闭状态不可以修改',3);
Abort;
end;
Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
inherited;
end;
procedure TFrm_Pm_Enter_NewFreePo.Act_DeleteLineExecute(Sender: TObject);
var
BookMArk:String;
begin
Inherited;
If AdoQry_Body.RecordCount=0 Then
Abort
Else
BookMArk:=AdoQry_Body.BookmArk;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
AdoQry_Body.Edit;
AdoQry_Body.fieldbyname('PoLineNo').AsInteger:=AdoQry_Body.RecNo;
AdoQry_Body.Post;
AdoQry_Body.Next;
end;
AdoQry_Body.BookMArk:=BookmArk;
end;
procedure TFrm_Pm_Enter_NewFreePo.Vw_BuyerCodeCheck(Sender: TObject);
var
SqlText:String;
begin
inherited;
SqlText:='Select EmployeeName From Employee Where EmployeeCode='''+Edt_EmployeeCode.Text+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
Edt_BuyerName.Text:=AdoQry_Tmp.fieldbyname('EmployeeName').AsString;
end;
procedure TFrm_Pm_Enter_NewFreePo.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
If AdoQry_Body.RecordCount =0 Then
Act_Save.Enabled:=False;
inherited;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?