📄 pm_enter_freepo.pas
字号:
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.DisableControls;
AdoQry_Body.First;
I:=1;
While Not AdoQry_Body.Eof Do
begin
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 (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
+' )And (PcNo='+QuotedStr(CurrentPcNo)+')'
+' 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 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 ('''+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='+QuotedStr(CurrentPcNo)+')'
+' 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)+'行数据有错,请修改!',1);
AdoQry_Body.EnableControls;
Abort;
end;
AdoQry_Body.Next;
I:=I+1;
end; //校验数据
IF (AdoQry_Body.RecordCount=0) And (status='Add') Then
begin
DispInfo('没有行数据,不能保存!',1);
AdoQry_Body.EnableControls;
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');
Application.ProcessMessages;
SqlText:='Insert Po '
+' (PoNo,VendorCode,PcNO,referenceno,POType,PODate,'
+' POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,CreateEmpolyeeCode,PORemArk)'
+' Values('
+''''+Trim(Edt_PoNo.Text)+''''+','
+''''+Trim(Edt_VendorCode.Text)+''''+','
+QuotedStr(CurrentPcNo)+','
+quotedstr(Trim(edt_rno.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 SavePoHistory1('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 SavePoLineHistory1('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 //自动产生领料单
}
IF Not NewAutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
0,AdoQry_Body.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
AdoQry_Body.Next;
end;
end;
If CurrentFormStatus='PArtEdit' Then
begin
for I:=0 to strinGlist.Count-1 do
begin
AdoQry_Temp.Connection := Dbconnect;
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
SavePoLineHistory(dbconnect,AdoQry_tmp.fieldbyname('pono').asstring,AdoQry_tmp.fieldbyname('polineno').asinteger,userCode,2); //保存历史记录
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='+QuotedStr(CurrentPcNo)+','
+' referenceno='+quotedstr(Trim(edt_rno.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 SavePoHistory1('Edit') Then
Abort;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If AdoQry_Body.fieldbyname('PoLineCheck').AsInteger = 1 then
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'+''''+')'
else
SqlText:=' UpDate PoLine '
+' Set PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
+' PoLineNo='+''''+IntToStr(AdoQry_Body.fieldbyname('POLineNo').AsInteger)+''''+','
+' polinestatus='+AdoQry_Body.fieldbyname('polinestatus').asstring+','
+' 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)+''''+','
+iifstring(AdoQry_Body.fieldbyname('polinestatus').asinteger=6,' ',' 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;
If Not SavePoLineHistory1('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 //自动产生领料单
}
IF Not NewAutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
1,AdoQry_Body.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
end;
AdoQry_Body.Next;
end;
end;
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
AdoQry_Body.EnableControls;
DispInfo('数据保存成功!',3);
Except
on e:Exception do
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
Edt_Pono.Text:='';
RecOrderror(Self,AdoQry_tmp,E.message);
AdoQry_Body.EnableControls;
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:=CurrentPcNo;
fieldbyname('referenceno').asstring:=Trim(edt_rno.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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -