📄 pm_enter_po.pas
字号:
+' And PoLine.PoNo='+''''+Trim(AdoQry_Head.fieldbyname('Pono').AsString)+''''
+' Join Uom On Item.UomCode=Uom.UomCode '
+' Order By PoLineNo ';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
Edt_Pono.Enabled:=False;
Edt_VendorCode.Enabled:=False;
Edt_Potax.Enabled:=False;
Edt_CurrencyCode.Enabled:=False;
Edt_BuyerName.Enabled:=False;
Edt_VendorName.Enabled:=False;
end;
procedure TFrm_Pm_Enter_Po.SaveData;
var
SqlText,CurrencyName,VendorName,EmployeeName,PoNo:String;
I:Integer;
begin
inherited;
IF (AdoQry_Body.RecordCount=0) And (status='Add') Then
begin
DispInfo('没有订单行数据,不能保存!',1);
Abort;
end;
AdoQry_Body.First;
I:=1;
While Not AdoQry_Body.Eof Do
begin
SqlText:=' Select PcLine.PcTaxPrice,PcLine.PcNoTaxPrice,PcLine.PcReferencedPrice '
+' From PcLine '
+' Where (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
+' )And (PcNo='''+Trim(Edt_PcNo.Text)+''')'
+' And (PcLine.PcLineStatus=1)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
If DispInfo('第'+IntToStr(I)+'行物料代码在相应的采购合同中找不到或不在批准状态,是否删除?',2)='y' Then
begin
AdoQry_Body.Delete;
Continue;
end
Else
Abort;
end//在采购合同中不存在时的处理
Else
begin
SqlText:=' Select PcLine.PcTaxPrice,PcLine.PcNoTaxPrice,PcLine.PcReferencedPrice '
+' From PcLine '
+' Where ('''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime) +''' >= PcStArtDate '
+' And '''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime) +'''<=PcendDate) '
+' And (('''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+'''>=PcStArtQty '
+' And '''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+'''<PcendQty)'
+' Or (PcStArtqty=0 And PcendQty=0)) '
+' And (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
+' )And (PcNo='''+Trim(Edt_PcNo.Text)+''') '
+' And (PcLine.PcLineStatus=1)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
With AdoQry_Body Do
begin
Edit;
fieldbyname('POREFERENCEDPRICE').AsInteger:=AdoQry_Tmp.fieldbyname('PcReferencedPrice').AsInteger;
fieldbyname('PoNoTaxPrice').AsFloat:=AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat;
fieldbyname('PONoTaxAmount').AsFloat:=AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat*fieldbyname('PoQty').AsFloat;
fieldbyname('PoTaxPrice').AsFloat:=AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat;
fieldbyname('PoTaxAmount').AsFloat:=AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat*fieldbyname('PoQty').AsFloat;
Post;
end;
end;//存在时的处理
If (AdoQry_Body.fieldbyname('PoQty').AsFloat<=0)
And (Status='Add') Then
begin
DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行约定交货量小于等于0,请修改!',1);
Abort;
end;
AdoQry_Body.Next;
I:=I+1;
end; //校验数据
IF (AdoQry_Body.RecordCount=0) And (status='Add') Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
DbConnect.beginTrans;
Try
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');
if edt_Pono.Text='' then
abort;
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)+''','
+'0,'
+''''+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;
If Not SavePoLineHistory('Add') Then //保存历史记录
Abort;
If Cmbx_PoType.ItemIndex=1 Then //委外加工
begin
IF Not AutoBuildopListOrder(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;
If (CurrentFormStatus='PArtEdit') Then
begin
for I:=0 to strinGlist.Count-1 do
begin
sqltext:=' Select * from PoLine where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.open;
if not AdoQry_Tmp.Eof then
If Not SavePoLineHistory1('Delete',AdoQry_Tmp) Then //保存历史记录
Abort;
sqltext:=' Delete PoLine where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
sqltext:=' Delete opItemList where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
end;
strinGlist.clear;
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= 0,'
+' 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(AdoQry_Body.fieldbyname('POReferencedPrice').Asinteger)+''''
+' 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;
If Not SavePoLineHistory('Edit') Then
Abort;
If ((Cmbx_PoType.ItemIndex=1) and (AdoQry_Body.fieldbyname('polinestatus').asinteger=5)) 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 AutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),
'Edit','Po',AdoQry_Body.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
end;
AdoQry_Body.Next;
end; //end while
end; //end if
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
AdoQry_Head.edit;
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:=0;
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;
AdoQry_Head.Post;
end;//更新缓存
Act_DeleteLine.Enabled := False;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -