📄 pm_pc_entry_b.pas
字号:
AdoQry_Tmp.ExecSQL;
end;
AdoQry_Body.First;
while(not AdoQry_Body.Eof)do
begin
if ItemCode=AdoQry_Body.fieldbyname('ItemCode').AsString then
begin
if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
and(endDate=AdoQry_Body.fieldbyname('PcendDate').AsDateTime)then
begin
if endQty=0 then
begin
DispStr:='同一时间段 重复的输入';
Abort;
end
else if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>endQty then
begin
DispStr:='起始数量不能跟上面的衔接';
Abort;
end
else
begin
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end
else if (FormatDateTime('yyyymmdd',AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
=FormatDateTime('yyyymmdd',endDate+1)) then
begin
if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
begin
DispStr:='新的日期时段起始数量必须从零开始!';
Abort;
end
else
begin
StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end
else
begin
if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)then
DispStr:='终止日期不能跟上面的衔接'
else
DispStr:='起始日期不能跟上面的衔接';
Abort;
end;
end
else
begin
if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
begin
DispStr:='新的日期时段起始数量必须从零开始!';
Abort;
end
else
begin
ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert PcLine'+
'(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate,'+
'PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
+' ReferencePricePass,FormalPricePass,PcLineStatus)'+
'Values('
+' '''+Bill_No+''''
+','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+','+AdoQry_Body.fieldbyname('PcTaxPrice').AsString+''
+','+AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString+''
+','''+AdoQry_Body.fieldbyname('PcStArtDate').AsString+''''
+','''+AdoQry_Body.fieldbyname('PcendDate').AsString+''''
+','+AdoQry_Body.fieldbyname('PcStArtQty').AsString+''
+','+AdoQry_Body.fieldbyname('PcendQty').AsString+''
+','+AdoQry_Body.fieldbyname('PcPriceType').AsString+''
+','+FloatToStr(AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsFloat)
+','+FloatToStr(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat)
+','+IIFString(AdoQry_Body.fieldbyname('PcTaxPrice').AsFloat>0,IntToStr(AdoQry_Body.fieldbyname('ReferencePricePass').AsInteger),'0')
+','+IIFString(AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsFloat>0,IntToStr(AdoQry_Body.fieldbyname('FormalPricePass').AsInteger),'0')
// +','+AdoQry_Body.fieldbyname('PcReferencedPrice').AsString+''
+','+AdoQry_Body.fieldbyname('PcLineStatus').AsString+''
+')';
AdoQry_Tmp.ExecSQL;
If Not ExistsSc(AdoQry_Body.fieldbyname('ItemCode').AsString) then
begin
SqlText := ' DeclAre @PmCode Int '
+' select @PmCode=PmCode from Item '
+' where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
+' select * from Sc_PriceMaster '
+' where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
+' If @@RowCount=0 '
+' begin '
+' Insert Into Sc_PriceMaster(ItemCode,Cost_Material, '
+' Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
+' Date_Edit,EmployeeCode_Edit) '
+' Values( '+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)+','
+'Case When @PmCode=1 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=2 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=1 then 0 end,'
+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end '
+' select * from Sc_CostMaster '
+' where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
+' If @@RowCount=0 '
+' begin '
+' Insert Into Sc_CostMaster(ItemCode,Cost_Material, '
+' Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
+' Date_Edit,EmployeeCode_Edit) '
+' Values( '+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)+','
+'Case When @PmCode=1 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=2 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=1 then 0 end,'
+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end ' ;
// ShowMessage(SqlText);
ExecuteSql(AdoQry_Tmp,SqlText,1) ;
end;
AdoQry_Body.Next;
end;
if(Status<>'Add')then
StatusStr:='修改'
else
StatusStr:='新增';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert PcHistory'
+'(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate'
+',ChgEmployeeCode,ChgTime,ChgType)'
+' Values('
+' '''+Bill_No+''''
+','''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
+','+AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsString+''
+','''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
+','''+AdoQry_Head.fieldbyname('CurrencyCode').AsString+''''
+','''+AdoQry_Head.fieldbyname('PcDate').AsString+''''
+','''+UserCode+''''
+',getdate()'
+','''+StatusStr+''''
+')';
AdoQry_Tmp.ExecSQL;
AdoQry_Body.First;
while not AdoQry_Body.Eof do
begin
if AdoQry_Body.UpdateStatus=usmodified then
StatusStr:='修改'
else if AdoQry_Body.UpdateStatus=usinserted then
StatusStr:='新增'
else
begin
AdoQry_Body.Next;
continue;
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert PcLineHistory'
+'(PcNo,pclineid,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
+',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
+' ReferencePricePass,FormalPricePass,PcLineStatus'
+',ChgEmployeeCode,ChgTime,ChgType)'
+' Values('
+' '''+Bill_No+''''
+','''+AdoQry_Body.fieldbyname('pclineid').AsString+''''
+','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+','+AdoQry_Body.fieldbyname('PcTaxPrice').AsString+''
+','+AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString+''
+','''+AdoQry_Body.fieldbyname('PcStArtDate').AsString+''''
+','''+AdoQry_Body.fieldbyname('PcendDate').AsString+''''
+','+AdoQry_Body.fieldbyname('PcStArtQty').AsString+''
+','+AdoQry_Body.fieldbyname('PcendQty').AsString+''
+','+AdoQry_Body.fieldbyname('PcPriceType').AsString+''
+','+AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsString
+','+AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString
+','+AdoQry_Body.fieldbyname('ReferencePricePass').AsString
+','+AdoQry_Body.fieldbyname('FormalPricePass').AsString
// +','+AdoQry_Body.fieldbyname('PcReferencedPrice').AsString+''
+','+AdoQry_Body.fieldbyname('PcLineStatus').AsString+''
+','''+UserCode+''''
+',getdate()'
+','''+StatusStr+''''
+')';
AdoQry_Tmp.ExecSQL;
AdoQry_Body.Next;
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert PcLineHistory'
+'(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
+',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
+' ReferencePricePass,FormalPricePass,PcLineStatus'
+',ChgEmployeeCode,ChgTime,ChgType)'
+' Select PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
+',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
+' ReferencePricePass,FormalPricePass,0'
+','''+UserCode+''''
+',getdate()'
+','''+'删除'+''''
+' From #PcLine';
AdoQry_Tmp.ExecSQL;
DBConnect.CommitTrans;
except
on e:exception do
begin
recOrderror(self,AdoQry_tmp,e.message);
DBConnect.RollBackTrans;
DispInfo(DispStr,3);
Abort;
end;
end;
end;
procedure TFrm_Pm_Pc_Entry_B.Act_DeleteLineExecute(Sender: TObject);
var
ItemCode:String;
CanDelete:Boolean;
i:Integer;
begin
if AdoQry_Body.RecordCount=0 then exit;
if AdoQry_Body.fieldbyname('PcLineStatus').AsInteger=1 then
begin
DispInfo(' 不能删除已批准的项目 ',3);
Abort;
end;
CanDelete:=False;
if(not AdoQry_Body.IsEmpty)then
begin
if(not AdoQry_Body.Eof)then
begin
ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
AdoQry_Body.Next;
if(ItemCode<>AdoQry_Body.fieldbyname('ItemCode').AsString)then
begin
CanDelete:=True;
end;
if(not AdoQry_Body.Eof)then
AdoQry_Body.Prior
else
CanDelete:=True;
end
else
CanDelete:=True;
if(CanDelete=True)and(DispInfo(' 真的删除当前记录吗? ',2)='y')then
begin
{if Edt_PcNo.text<>'' then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := ' select * from po join poline on po.pono=poline.pono '
+' where PcNo= '''+Edt_PcNo.text+''''
+' and ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').asstring+'''';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -