📄 pm_pc_check1.pas
字号:
unit Pm_Pc_Check1;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, DBCtrls, jpeg, ExtPrintReport;
Type
TFrm_Pm_Pc_Check1 = Class(TFrm_Base_Check)
Label1: TLabel;
DBText1: TDBText;
DBText2: TDBText;
Label2: TLabel;
AdoQry_HeadPcNo: TStringField;
AdoQry_HeadVendorCode: TStringField;
AdoQry_HeadVendorName: TStringField;
AdoQry_HeadVendorCodeName: TStringField;
AdoQry_HeadPcDate: TDateTimeField;
AdoQry_HeadPcTaxRate_Percent: TIntegerField;
AdoQry_HeadCurrencyCode: TStringField;
AdoQry_HeadCurrencyName: TStringField;
AdoQry_HeadRemArk: TStringField;
AdoQry_HeadTmpFlag: TIntegerField;
AdoQry_HeadItemCode: TStringField;
AdoQry_HeadItemName: TStringField;
AdoQry_HeadItemCodeName: TStringField;
AdoQry_HeadPcLineStatus: TIntegerField;
AdoQry_HeadPcTaxPrice: TFloatField;
AdoQry_HeadPcNoTaxPrice: TFloatField;
AdoQry_HeadPcStArtDate: TDateTimeField;
AdoQry_HeadPcendDate: TDateTimeField;
AdoQry_HeadPcStArtQty: TFloatField;
AdoQry_HeadPcendQty: TFloatField;
AdoQry_HeadPcPriceType: TIntegerField;
AdoQry_HeadPcLineId: TAutoIncField;
AdoQry_HeadPcTaxPrice_Formal: TFloatField;
AdoQry_HeadPcNoTaxPrice_Formal: TFloatField;
AdoQry_HeadReferencePricePass: TIntegerField;
AdoQry_HeadFormalPricePass: TIntegerField;
procedure Act_CheckExecute(Sender: TObject);
procedure Act_CancelCheckExecute(Sender: TObject);
procedure DBGridEhTitleClick(Column: TColumnEh);
procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure Act_ModifyExecute(Sender: TObject);
private
Flag:Boolean ;
{ Private declarations }
public
{ Public declarations }
IsPriceRequestPass : Integer; //采购价格是否需要批准 0:不需要 1:需要
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
Function ExistsSc(ItemCode:String) : Boolean;
end;
var
Frm_Pm_Pc_Check1: TFrm_Pm_Pc_Check1;
implementation
uses Sys_Global,Pm_Pc_Check1_C, Pm_Pc_Check_D, Sys_Condition;
{$R *.DFM}
{ TFrm_Pm_Pc_Check }
function TFrm_Pm_Pc_Check1.ExistsSc(ItemCode: String): Boolean;
begin
Result := True;
ExecuteSql(AdoQry_Tmp,'select * from Sc_PriceMaster'
+' where ItemCode='+QuotedStr(ItemCode),0);
If AdoQry_Tmp.RecordCount = 0 then
Result := False;
ExecuteSql(AdoQry_Tmp,'select * from Sc_CostMaster'
+' where ItemCode='+QuotedStr(ItemCode),0);
If AdoQry_Tmp.RecordCount = 0 then
Result := False;
end;
procedure TFrm_Pm_Pc_Check1.InitForm(AdOConnection: TAdOConnection;
ReadOnly: Boolean);
begin
inherited;
ExecuteSql(AdoQry_Tmp,'select * from PmParam '
+' where PmParamCode=''IsPriceRequestPass''',0);
IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;
Act_Check.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
Act_CancelCheck.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
Act_Modify.Enabled := IIFValue(IsPriceRequestPass=0,False,True);
PriceFields:='PcNoTaxPrice,PcTaxPrice,';
SelectFromSQL:='Select Pc.PcNo'
+',Pc.VendorCode'
+',Vendor.VendorName'
+',Pc.VendorCode+'' ''+Vendor.VendorName As VendorCodeName'
+',Pc.PcDate'
+',Pc.PcTaxRate_Percent'
+',Pc.CurrencyCode'
+',Currency.CurrencyName'
+',Pc.RemArk'
+',PcLine.TmpFlag'
+',PcLine.ItemCode'
+',Item.ItemName'
+',PcLine.ItemCode+'' ''+Item.ItemName As ItemCodeName'
+',PcLine.PcLineStatus'
+',PcLine.PcTaxPrice'
+',PcLine.PcNoTaxPrice'
+',PcLine.PcTaxPrice_Formal '
+',PcLine.PcNoTaxPrice_Formal '
+',PcLine.ReferencePricePass '
+',PcLine.FormalPricePass '
+',PcLine.PcStArtDate'
+',PcLine.PcendDate'
+',PcLine.PcStArtQty'
+',PcLine.PcendQty'
+',PcLine.PcPriceType'
// +',PcLine.PCReferencedPrice'
+',PcLine.PcLineId'
+' From PcLine'
+' Left Join Pc On PcLine.PcNo=Pc.PcNo'
+' Left Join Vendor On Pc.VendorCode=Vendor.VendorCode'
+' Left Join Currency On Pc.CurrencyCode=Currency.CurrencyCode'
+' Left Join Item on Item.ItemCode=PcLine.ItemCode';
OrderByFields:='VendorCode,ItemCode,PcStArtDate,PcStArtQty';
Frm_Sys_Condition:=TFrm_Pm_Pc_Check1_C.Create(Self);
Condition:='PcLine.FormalPricePass=0';
Act_Filter.Execute;
// conditionuserDefine:=condition;
Frm_Sys_Condition:=nil;
Flag:=False;
end;
procedure TFrm_Pm_Pc_Check1.Act_CheckExecute(Sender: TObject);
var
BookmArk:TBookmArk;
SqlText : String;
begin
inherited;
if DispInfo('确定批准选定的采购价格项?',2)='n' then
Exit;
AdoQry_Head.DisableControls;
BookmArk:=AdoQry_Head.GetBookmArk;
AdoQry_Head.First;
while not AdoQry_Head.Eof do
begin
if (AdoQry_Head.fieldbyname('TmpFlag').AsInteger = 1)
and ( AdoQry_Head.fieldbyname('PcTaxPrice_Formal').AsFloat>0) then
begin
// 对批准记录操作日志
If Not ExistsSc(AdoQry_Head.fieldbyname('ItemCode').AsString) then
begin
If DispInfo('物料'+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)+'没有标准成本,是否将该价格作为标准成本价!',2)<>'y' then
begin
AdoQry_Head.Next;
Continue;
end;
dbconnect.beginTrans;
SqlText := ' DeclAre @PmCode Int '
+' select @PmCode=PmCode from Item '
+' where ItemCode='+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)
+' select * from Sc_PriceMaster '
+' where ItemCode='+QuotedStr(AdoQry_Head.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_Head.fieldbyname('ItemCode').AsString)+','
+'Case When @PmCode=1 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=2 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=1 then 0 end,'
+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end '
+' select * from Sc_CostMaster '
+' where ItemCode='+QuotedStr(AdoQry_Head.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_Head.fieldbyname('ItemCode').AsString)+','
+'Case When @PmCode=1 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=2 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=1 then 0 end,'
+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end ' ;
// ShowMessage(SqlText);
ExecuteSql(AdoQry_Tmp,SqlText,1) ;
end;
If not dbconnect.InTransaction then
dbconnect.beginTrans;
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('
+' '''+AdoQry_Head.fieldbyname('pcno').AsString+''''
+','''+AdoQry_Head.fieldbyname('pclineid').AsString+''''
+','''+AdoQry_Head.fieldbyname('ItemCode').AsString+''''
+','+AdoQry_Head.fieldbyname('PcTaxPrice').AsString+''
+','+AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString+''
+','''+AdoQry_Head.fieldbyname('PcStArtDate').AsString+''''
+','''+AdoQry_Head.fieldbyname('PcendDate').AsString+''''
+','+AdoQry_Head.fieldbyname('PcStArtQty').AsString+''
+','+AdoQry_Head.fieldbyname('PcendQty').AsString+''
+','+AdoQry_Head.fieldbyname('PcPriceType').AsString+''
+','+FloatToStr(AdoQry_Head.fieldbyname('PcTaxPrice_Formal').AsFloat)
+','+FloatToStr(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat)
+','+IntToStr(AdoQry_Head.fieldbyname('ReferencePricePass').AsInteger)
+','+IntToStr(AdoQry_Head.fieldbyname('FormalPricePass').AsInteger)
// +','+AdoQry_Head.fieldbyname('PcReferencedPrice').AsString+''
+','+AdoQry_Head.fieldbyname('PcLineStatus').AsString+''
+','''+UserCode+''''
+',getdate()'
+',''批准'''
+')';
AdoQry_Tmp.ExecSQL;
If Not ExistsSc(AdoQry_Head.fieldbyname('ItemCode').AsString) then
begin
SqlText := ' DeclAre @PmCode Int '
+' select @PmCode=PmCode from Item '
+' where ItemCode='+QuotedStr(AdoQry_Head.fieldbyname('ItemCode').AsString)
+' select * from Sc_PriceMaster '
+' where ItemCode='+QuotedStr(AdoQry_Head.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_Head.fieldbyname('ItemCode').AsString)+','
+'Case When @PmCode=1 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=2 then '+IIfString(AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Head.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Head.fieldbyname('PcNoTaxPrice').AsString)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -