📄 pm_enter_newpo.pas
字号:
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)+'行约定交货量小于等于0,请修改!',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');
if edt_Pono.Text='' then
abort;
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)+''','
+'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;
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 //委外加工
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 //自动产生领料单
}
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;
end;
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;
OperationMOPO(AdoQry_Temp,Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString),'po',3,
Trim(Edt_PoNo.Text),AdoQry_Tmp.fieldbyname('PoLineNo').AsInteger,AdoQry_Tmp.fieldbyname('POLINESTATUS').AsInteger,
0,AdoQry_Tmp.fieldbyname('PoQty').Asfloat,
AdoQry_Tmp.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Tmp.fieldbyname('POStArtWorkDate').AsString,
AdoQry_Tmp.fieldbyname('POLineDATE').AsString,Cmbx_PoType.ItemIndex,Edt_VendorCode.text );
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='+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= 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
if AdoQry_Body.fieldbyname('PoLineStatus').AsInteger=5 then
begin
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)+''''+','
+' 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+''''
end
else
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)+''''+','
+' polinestatus='+AdoQry_Body.fieldbyname('polinestatus').asstring+','
+' PoQty='+''''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').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+'''';
end;
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 )';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),'po',
IIfInteger(AdoQry_Body.fieldbyname('PoLineCheck').AsInteger = 1,1,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) 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 while
end; //end if
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
AdoQry_Head.Edit;
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:=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;//更新缓存
end;
procedure TFrm_Pm_Enter_NewPo.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.Items.Add('3 加工贸易进口');
Cmbx_PoType.ItemIndex:=0;
MEdt_PoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
Frm_Pm_Enter_Po_D:=TFrm_Pm_Enter_Po_D.Create(Self);
Frm_Entry_Detail:=Frm_Pm_Enter_Po_D;
StrinGlist:=TStrinGlist.Create;
end;
procedure TFrm_Pm_Enter_NewPo.Act_SaveExecute(Sender: TObject);
var sqltext:string;
begin
IF (AdoQry_Body.RecordCount=0) And (status='Add') Then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -