📄 pm_pc_entry_b.pas
字号:
unit Pm_Pc_Entry_B;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, ExtEdit, DBCtrls, Mask, ExtPrintReport,
linkedit, jpeg;
Type
TFrm_Pm_Pc_Entry_B = Class(TFrm_Base_Entry_Body)
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Edt_RemArk: TEdit;
Label7: TLabel;
DBTxt_ItemName: TDBText;
Label8: TLabel;
Lbl_Currency: TLabel;
ActionList1: TActionList;
Label9: TLabel;
MEdt_BillDate: TMaskEdit;
Lbl_TaxRate: TLabel;
ExtEdt_VendorCode: TLinkEdit;
Lbl_VendorName: TLabel;
Edt_VendorName: TEdit;
Edt_CurrencyName: TEdit;
Edt_TaxRate: TEdit;
Edt_CurrencyCode: TEdit;
chb_Overdue: TCheckBox;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
procedure ExtEdt_VendorCodeChange(Sender: TObject);
procedure IntegerCheck(Sender: TObject);
procedure AdoQueryAfterOpen(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Act_PreviewExecute(Sender: TObject);
procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure ExtEdt_VendorCodeExit(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure Act_InsertLineExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure chb_OverdueClick(Sender: TObject);
procedure Act_FilterExecute(Sender: TObject);
private
deleteflag:boolean;
{ Private declarations }
public
{ Public declarations }
procedure InitReport; Override;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String); Override;//设置各种状态下那些控件Enable
procedure InitControls; Override;//初始化Form上所有控件
procedure SaveHeadData; Override;//把表头控件值写入缓存,不要Post
procedure SaveData; Override;//把表头控件写入缓存,不要Post
Function ExistsSc(ItemCode:String) : Boolean;
end;
var
Frm_Pm_Pc_Entry_B: TFrm_Pm_Pc_Entry_B;
implementation
uses Pm_Pc_Entry_D,Sys_Global;
{$R *.DFM}
{ TFrm_Pm_Pc_Entry_D }
procedure TFrm_Pm_Pc_Entry_B.InitControls;
var
Bill_ID:String;
begin
if (showflag=False) and (status<>'Query') then
begin
deleteflag:=True;
try
if deleteflag then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Drop Table #PcLine';
AdoQry_Tmp.ExecSQL;
end;
except
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Create Table #PcLine ('
+' [PcNo] [varchAr] (16) NULL'
+',[ItemCode] [varchAr] (16) NULL'
+',[PcTaxPrice] [float] NULL'
+',[PcNoTaxPrice] [float] NULL'
+',[PcStArtDate] [smalldatetime] NULL'
+',[PcendDate] [smalldatetime] NULL'
+',[PcStArtQty] [float] NULL'
+',[PcendQty] [float] NULL'
+',[PcPriceType] [int] NULL'
// +',[PCReferencedPrice] [int] NULL'
+',[PcTaxPrice_Formal] [float] NULL'
+',[PcNoTaxPrice_Formal] [float] NULL'
+',[ReferencePricePass] [int] NULL'
+',[FormalPricePass] [int] NULL'
+')';
AdoQry_Tmp.ExecSQL;
end;
if Status='Add' then
SetFocus_Control:=ExtEdt_VendorCode
else
SetFocus_Control:=Edt_RemArk;
ExtendCaption:=False;
inherited;
if Status='ReadOnly' then
begin
Caption:='采购价格表查询';
Pnl_Title.Caption:='采购价格表查询';
end
else
begin
deleteflag:=True;
Caption:='采购价格表';
Pnl_Title.Caption:='采购价格表';
end;
if Status<>'Add' then
Bill_ID:=AdoQry_Head.fieldbyname('PcNo').AsString
else
Bill_ID:='';
PriceFields:='PcTaxPrice,PcNoTaxPrice,';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:='Select pcline.PcNo'
+',PcLine.PcLineId'
+',PcLine.ItemCode'
+',Item.ItemName'
+',PcLine.PcLineStatus'
+',Uom.UomName'
+',PcLine.PcTaxPrice'
+',PcLine.PcNoTaxPrice'
+',PcLine.PcStArtDate'
+',PcLine.PcendDate'
+',PcLine.PcStArtQty'
+',PcLine.PcendQty'
+',PcLine.PcPriceType'
+',PcLine.PcTaxPrice_Formal '
+',PcLine.PcNoTaxPrice_Formal '
+',PcLine.ReferencePricePass '
+',PcLine.FormalPricePass '
// +',PcLine.PCReferencedPrice'
+' From PcLine left Join Item On PcLine.ItemCode=Item.ItemCode'
+' Left Outer Join Uom On Item.UomCode=Uom.UomCode'
+' Where PcLine.PcNo='''+Bill_ID+''''
+iifstring(chb_Overdue.Checked,'',' and pcline.pcenddate>=getdate() ');
;
AdoQry_Body.Open;
AdoQry_Body.Sort:='ItemCode,PcStArtDate,PcStArtQty';
with AdoQry_Head do
begin
// Edt_PcNo.Text:=Bill_ID;
ExtEdt_VendorCode.Text:=fieldbyname('VendorCode').AsString;
Lbl_VendorName.Caption:=fieldbyname('VendorName').AsString;
Edt_VendorName.Text :=fieldbyname('VendorName').AsString;
if Status='Add' then
MEdt_BillDate.Text:=FormatDateTime('yyyy.mm.dd',Now)
else
MEdt_BillDate.Text:=fieldbyname('PCDate').AsString;
Lbl_Currency.Caption:=fieldbyname('CurrencyCode').AsString+' '
+fieldbyname('CurrencyName').AsString;
Lbl_TaxRate.Caption:=fieldbyname('PCTaxRate_Percent').AsString;
Edt_CurrencyName.Text := fieldbyname('CurrencyName').AsString;
Edt_TaxRate.Text :=fieldbyname('PCTaxRate_Percent').AsString;
Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
end;
try
if deleteflag then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Delete #PcLine';
AdoQry_Tmp.ExecSQL;
end;
except
end;
// Extedt_VendorCode.OnExit(Extedt_VendorCode);
Edt_VendorName.Enabled := False;
Edt_CurrencyCode.Enabled := False;
Edt_CurrencyName.Enabled := False;
Edt_TaxRate.Enabled := False;
if Trim(edt_taxrate.text)='0' then edt_taxrate.Enabled:=True;
if status<>'Add' then
begin
chb_Overdue.Enabled:=True;
end;
end;
procedure TFrm_Pm_Pc_Entry_B.SaveHeadData;
begin
inherited;
with AdoQry_Head do
begin
fieldbyname('VendorCode').AsString:=ExtEdt_VendorCode.Text;
fieldbyname('VendorName').AsString:=Edt_VendorName.Text;
fieldbyname('PCTaxRate_Percent').AsString:=Edt_TaxRate.Text;
fieldbyname('CurrencyCode').AsString:=GetCode(Lbl_Currency.Caption);
fieldbyname('CurrencyName').AsString:=GetName(Lbl_Currency.Caption);
fieldbyname('RemArk').AsString:=Edt_RemArk.Text;
fieldbyname('PCDate').AsString:=MEdt_BillDate.Text;
end;
end;
procedure TFrm_Pm_Pc_Entry_B.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String);
begin
inherited;
EnableControls:='Edt_RemArk,';
end;
procedure TFrm_Pm_Pc_Entry_B.FormCreate(Sender: TObject);
begin
inherited;
Frm_Pm_Pc_Entry_D:=TFrm_Pm_Pc_Entry_D.Create(Self);
Frm_Entry_Detail:=Frm_Pm_Pc_Entry_D;//设置弹出Detail
end;
procedure TFrm_Pm_Pc_Entry_B.SaveData;
var
Bill_No,ItemCode,DispStr,StatusStr:String;
StArtQty,endQty:Double;
SqlText : String;
StArtDate,endDate:TDateTime;
IsPriceRequestPass : Integer ;//采购价格是否需要批准 0:不需要 1:需要
begin
inherited;
If AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
ExecuteSql(AdoQry_Tmp,'Select * from PmParam '
+' where PmParamCode=''ISPriceRequestPass''',0);
IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;
DBConnect.beginTrans;
DispStr:=' 保存失败,请重试 ';
try
if(Status<>'Add')then
begin
Bill_No:=AdoQry_Head.fieldbyname('PcNo').AsString;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Delete From PcLine Where PcNo='''+Bill_No+'''';
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Pc Set'
+' VendorCode='''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
+',RemArk='''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
+' Where PcNo='''+Bill_No+'''';
AdoQry_Tmp.ExecSQL;
end
else
begin
Bill_No:=GetNo(DBConnect,FormatDateTime('yymm',Now),'Pc');
AdoQry_Head.fieldbyname('PcNo').AsString:=Bill_No;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert pc'+
'(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate)'+
'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+''''
+')';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -