📄 pm_enter_purcharseprice_d.pas
字号:
unit Pm_Enter_PurcharsePrice_D;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Detail, Db, AdODB, ExtCtrls, StdCtrls, ExtEdit, Mask, linkedit;
Type
TFrm_Pm_Enter_PurcharsePrice_D = Class(TFrm_Base_Detail)
Label2: TLabel;
Extedt_ItemCode: TLinkEdit;
edt_ItemName: TEdit;
Label5: TLabel;
ExtEdt_VendorCode: TLinkEdit;
Edt_VendorName: TEdit;
Label11: TLabel;
Lbl_UomName: TEdit;
Label6: TLabel;
Edt_TaxRate: TEdit;
Label8: TLabel;
Edt_CurrencyCode: TEdit;
Edt_CurrencyName: TEdit;
Label3: TLabel;
Label4: TLabel;
Label1: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
MEdt_PcStArtDate: TMaskEdit;
MEdt_PcendDate: TMaskEdit;
Edt_PcStArtQty: TEdit;
Edt_PcendQty: TEdit;
Edt_PcTaxPrice: TEdit;
Edt_PcNoTaxPrice: TEdit;
CmBx_PcPriceType: TComboBox;
Edt_PcTaxPrice_Formal: TEdit;
Edt_PcNoTaxPrice_Formal: TEdit;
procedure ItemCodeCheck(Sender: TObject);
procedure btn_okClick(Sender: TObject);
procedure Extedt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Extedt_ItemCodeExit(Sender: TObject);
procedure ExtEdt_VendorCodeExit(Sender: TObject);
procedure Edt_PcTaxPrice_FormalExit(Sender: TObject);
procedure Edt_PcTaxPriceExit(Sender: TObject);
procedure Edt_PcNoTaxPriceExit(Sender: TObject);
procedure Edt_PcNoTaxPrice_FormalExit(Sender: TObject);
procedure Edt_PcStArtQtyExit(Sender: TObject);
procedure Edt_PcendQtyExit(Sender: TObject);
procedure MEdt_PcendDateExit(Sender: TObject);
procedure Extedt_ItemCodeButtonClick(Sender: TObject);
private
CurrentUom:string; //记录当前'计量单位'
// Function SaveHistory:Boolean;//保存历史记录
{ Private declarations }
public
IsPriceRequestPass : Integer; //0: 不需要 1:需要
PcNo : String;
procedure InitControls; Override;
procedure SaveData;Override;
procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
function ExistsPC(VendorCode,ItemCode,sdate,edate:string;sqty,eqty:double):boolean;
Function ExistsSc(ItemCode:String) : Boolean;
{ Public declarations }
end;
var
Frm_Pm_Enter_PurcharsePrice_D: TFrm_Pm_Enter_PurcharsePrice_D;
implementation
uses Sys_Global,Mrp_Global;
{$R *.DFM}
function checksymbol(Source:string;disptext:string):boolean; //检查输入中是否有单引号
var
i:integer;
s:string;
begin
s:=Trim(Source);
for i:=1 to length(s) do
if s[i]='''' then
begin
DispInfo(disptext+'中不能使用单引号!',1);
Result:=False;
exit;
end;
Result:=True;
end;
procedure TFrm_Pm_Enter_PurcharsePrice_D.InitControls;
begin
Inherited;
ExecuteSql(AdoQry_Tmp,'Select * from PmParam '
+' where PmParamCode=''ISPriceRequestPass''',0);
IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;
with AdoQry_Maintain do
begin
ExtEdt_VendorCode.Text := fieldbyname('VendorCode').AsString;
Edt_VendorName.Text := fieldbyname('VendorName').AsString;
ExtEdt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
Edt_ItemName.Text :=fieldbyname('ItemName').AsString;
Lbl_UomName.Text :=fieldbyname('UomName').AsString;
Edt_TaxRate.Text := FloatToStr(fieldbyname('PcTaxRate_Percent').AsFloat);
// If Edt_TaxRate.Text='0' then Edt_TaxRate.Enabled := True
// else Edt_TaxRate.Enabled := False;
Edt_CurrencyCode.Text := fieldbyname('CurrencyCode').AsString;
Edt_CurrencyName.Text := fieldbyname('CurrencyName').AsString;
if (Status='Add') then
begin
PcNo := '';
MEdt_PcStArtDate.Text := fieldbyname('PcStArtDate').AsString;
If Trim(fieldbyname('PcStArtDate').AsString) = '' then
MEdt_PcStArtDate.Text:=FormatDateTime('yyyy.mm.dd',Now);
MEdt_PcendDate.Text := fieldbyname('PcendDate').AsString;
If Trim(fieldbyname('PcendDate').AsString) = '' then
MEdt_PcendDate.Text:=FormatDateTime('yyyy.mm.dd',Now);
CmBx_PcPriceType.ItemIndex:=0;
// CmBx_PcReferencedPrice.ItemIndex:=0;
Edt_PcTaxPrice.Text:='0';
Edt_PcNoTaxPrice.Text:='0';
Edt_PcTaxPrice_Formal.Text := '0';
Edt_PcNoTaxPrice_Formal.Text := '0';
Edt_PcStArtQty.Text:=IntToStr(fieldbyname('PcStArtQty').AsInteger);
Edt_PcendQty.Text:=IntToStr(fieldbyname('PcendQty').AsInteger);
end
else
begin
PcNo := fieldbyname('PcNo').AsString;
MEdt_PcStArtDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('PcStArtDate').AsDateTime);
MEdt_PcendDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('PcendDate').AsDateTime);
CmBx_PcPriceType.ItemIndex:=fieldbyname('PcPriceType').AsInteger;
// CmBx_PcReferencedPrice.ItemIndex:=fieldbyname('PCReferencedPrice').AsInteger;
Edt_PcTaxPrice.Text:=fieldbyname('PcTaxPrice').AsString;
Edt_PcNoTaxPrice.Text:=fieldbyname('PcNoTaxPrice').AsString;
Edt_PcTaxPrice_Formal.Text:=FloatToStr(fieldbyname('PcTaxPrice_Formal').AsFloat);
Edt_PcNoTaxPrice_Formal.Text:=FloatToStr(fieldbyname('PcNoTaxPrice_Formal').AsFloat);
Edt_PcStArtQty.Text:=IntToStr(fieldbyname('PcStArtQty').AsInteger);
Edt_PcendQty.Text:=IntToStr(fieldbyname('PcendQty').AsInteger);
end;
end;
end;
procedure TFrm_Pm_Enter_PurcharsePrice_D.SaveData;
var SQlText : String;
begin
inherited;
If UpperCase(Status)=UpperCase('Add') then
begin
If PcNo = '' then
begin
PcNo := GetNo(DBConnect,FormatDateTime('yymm',Now),'Pc');
SqlText := 'Insert pc'+
'(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate)'+
'Values('''+PcNo+''''
+','''+ExtEdt_VendorCode.Text+''''
+','+Edt_TaxRate.Text+''
+','
+''''''
+','''+Edt_CurrencyCode.Text+''''
+','''+FormatDateTime('yyyy.mm.dd',Now)+''''
+')';
end;
SqlText := SQlText
+' Insert PcLine'+
'(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate,'+
'PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
+' PcLineStatus,ReferencePricePass,FormalPricePass)'+
'Values('
+' '''+PcNo+''''
+','''+ExtEdt_ItemCode.Text+''''
+','+Edt_PcTaxPrice.Text+''
+','+Edt_PcNoTaxPrice.Text+''
+','''+MEdt_PcStArtDate.Text+''''
+','''+MEdt_PcendDate.Text+''''
+','+Edt_PcStArtQty.Text+''
+','+Edt_PcendQty.Text+''
+','+IntToStr(Cmbx_PcPriceType.ItemIndex)+''
+','+Edt_PcTaxPrice_Formal.Text
+','+Edt_PcNoTaxPrice_Formal.Text+','
+IIFString(IsPriceRequestPass=0,'1','0')
+','+IIFString(IsPriceRequestPass=1,'0',IIfString(StrToFloat(Edt_PcNoTaxPrice.TExt)>0,'1','0'))
+','+IIFString(IsPriceRequestPass=1,'0',IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.TExt)>0,'1','0'))
// +','+AdoQry_Maintain.fieldbyname('PcLineStatus').AsString+''
+')';
ExecuteSql(AdoQry_Tmp,SqlText,1);
If Not ExistsSc(ExtEdt_ItemCode.Text) then
begin
SqlText := ' DeclAre @PmCode Int '
+' select @PmCode=PmCode from Item '
+' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
+' select * from Sc_PriceMaster '
+' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
+' 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(ExtEdt_ItemCode.Text)+','
+'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
+' when @PmCode=1 then 0 end,'
+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end '
+' select * from Sc_CostMaster '
+' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
+' 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(ExtEdt_ItemCode.Text)+','
+'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
+' when @PmCode=2 then 0 end,'
+'Case When @PmCode=1 then '+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)
+' when @PmCode=1 then 0 end,'
+IIfString(StrToFloat(Edt_PcNoTaxPrice_Formal.Text)>0,Edt_PcNoTaxPrice_Formal.Text,Edt_PcNoTaxPrice.Text)+','
+'0.0,'
+'GetDate(),'
+QuotedStr(UserCode)+','
+'GetDate(),'
+QuotedStr(UserCode)
+' ) '
+' end ' ;
ExecuteSql(AdoQry_Tmp,SqlText,1) ;
end;
end
else begin
SqlText := 'Update PcLine '
+' set PcTaxPrice='+Edt_PcTaxPrice.Text+','
+' PcNoTaxPrice='+Edt_PcNoTaxPrice.Text+','
+' PcTaxPrice_Formal='+Edt_PcTaxPrice_Formal.Text+','
+' PcNoTaxPrice_Formal='+Edt_PcNoTaxPrice_Formal.Text+','
+' PcStArtDate='+QuotedStr(MEdt_PcStArtDate.Text)+','
+' PcendDate='+QuotedStr(Medt_PcendDate.Text)+','
+' PcStArtQty='+Edt_PcStArtQty.Text+','
+' PcendQty='+Edt_PcendQty.Text
+' where PcNo='+QuotedStr(PcNo)
+' and PcLineId='+IntToStr(AdoQry_Maintain.fieldbyname('PcLineId').AsInteger);
ExecuteSql(AdoQry_Tmp,SqlText,1) ;
end;
with AdoQry_Maintain do
begin
if Add then Append else edit;
If Add then
fieldbyname('PcNo').AsString := PcNo;
fieldbyname('VendorCode').AsString := ExtEdt_VendorCode.Text;
fieldbyname('VendorName').AsString := Edt_VendorName.Text;
fieldbyname('ItemCode').AsString:=Trim(Extedt_ItemCode.text);
fieldbyname('ItemName').AsString := Edt_ItemName.Text;
fieldbyname('UomName').AsString := lbl_UomName.Text;
fieldbyname('PcTaxRate_Percent').AsString := Edt_TaxRate.Text;
fieldbyname('CurrencyCode').AsString := Edt_CurrencyCode.Text;
fieldbyname('CurrencyName').AsString := Edt_CurrencyName.Text;
fieldbyname('PcStArtDate').AsString := MEdt_PcStArtDate.Text;
fieldbyname('PcendDate').AsString := MEdt_PcendDate.Text;
fieldbyname('PcStArtQty').AsString := Edt_PcStArtQty.Text;
fieldbyname('PcendQty').AsString := Edt_PcendQty.Text;
fieldbyname('PcTaxPrice').AsString := Edt_PcTaxPrice.Text;
fieldbyname('PcNoTaxPrice').AsString := Edt_PcNoTaxPrice.Text;
fieldbyname('PcTaxPrice_Formal').AsString := Edt_PcTaxPrice_Formal.Text;
fieldbyname('PcNoTaxPrice_Formal').AsString := Edt_PcNoTaxPrice_Formal.Text;
If Add then
fieldbyname('PcDate').AsString := FormatDateTime('yyyy.mm.dd',Now);
Post;
end;
end;
procedure TFrm_Pm_Enter_PurcharsePrice_D.ItemCodeCheck(Sender: TObject);
var
SqlText:String;
Ado_Temp:TAdoQuery;
begin
inherited;
If Activecontrol.Name='btn_Cancel' Then
Exit;
Ado_Temp:=tAdoQuery.Create(nil);
Ado_Temp.Connection:=AdoQry_Maintain.Connection;
SqlText:=' select Item.*,Uom.* '
+' from Item left outer join Uom on Item.UomCode=Uom.UomCode '
+' where ItemCode='+''''+Trim(Extedt_ItemCode.Text)+''''
+' And ItemType=0';
Ado_Temp.Close;
Ado_Temp.SQL.Text:=SqlText;
Ado_Temp.Open;
if Ado_Temp.RecordCount=0 then
begin
Ado_Temp.Free;
DispInfo('你输入的物料代码不存在,请重新输入!',1);
TWincontrol(sender).setfocus;
abort;
end
else
CurrentUom:=Ado_Temp.fieldbyname('UomName').asstring;
Ado_Temp.Free;
end;
procedure TFrm_Pm_Enter_PurcharsePrice_D.btn_okClick(Sender: TObject);
var ExistsSc : Boolean;
SqlText :String;
begin
ExistsSc := True;
If Trim(ExtEdt_VendorCode.Text)='' then
begin
DispInfo('供应商代码不能为空!',1);
ExtEdt_VendorCode.SetFocus;
Abort;
end;
ExecuteSql(AdoQry_Tmp,'select * from PmParam '
+' where PmParamCode='+QuotedStr('PoPriceRequestispo'),0);
If AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger = 1 then
begin
SqlText := 'select * from ItemSampleNo '
+' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
+' and VendorCode='+QuotedStr(ExtEdt_VendorCode.Text)
+' and StArtDate<='+QuotedStr(Medt_PcStArtDate.Text)
+' and StArtDate<='+QuotedStr(Medt_PcendDate.Text)
+' and endDate>='+QuotedStr(Medt_PcendDate.Text);
ExecuteSql(AdoQry_Tmp,SqlText,0);
If AdoQry_Tmp.RecordCount=0 then
begin
DispInfo('该供应商没有该物料该时间段的样品单号!',3);
If Medt_PcStArtDate.CanFocus then
Medt_PcStArtDate.SetFocus;
Abort;
end;
end;
if existsPC(ExtEdt_VendorCode.Text,Trim(Extedt_ItemCode.text),medt_PcstArtdate.Text,medt_Pcenddate.Text,strtofloat(edt_PcstArtqty.Text),strtofloat(edt_Pcendqty.text)) then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -