📄 pm_fakepc_b.pas
字号:
unit Pm_FakePc_B;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
ExtCtrls, ComCtrls, ToolWin, StdCtrls, Mask, ExtEdit, QuickRpt, DBCtrls,
jpeg;
Type
TFrm_Pm_FakePc_B = Class(TFrm_Base_Entry_Body)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
lbl_taxrate: TLabel;
Extedt_VendorCode: TExtEdit;
Extedt_Pcno: TExtEdit;
Extedt_FakePcno: TExtEdit;
Extedt_Signlocation: TExtEdit;
cmbbx_PcType: TComboBox;
cmbbx_Hastax: TComboBox;
medt_Date: TMaskEdit;
cmbbx_PoTermSet: TComboBox;
lbl_VendorName: TLabel;
DBText1: TDBText;
Label10: TLabel;
procedure Act_InsertLineExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Extedt_PcnoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Extedt_PcnoExit(Sender: TObject);
procedure Extedt_FakePcnoExit(Sender: TObject);
procedure cmbbx_PoTermSetExit(Sender: TObject);
procedure UsableVendorCodeCheck(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Act_PropertyExecute(Sender: TObject);
procedure Extedt_FakePcnoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
taxrate,tmp_FakePcno,oldPoTermSet:string;
procedure initcmbbx_PoTermSet;
public
{ Public declarations }
procedure InitControls;Override;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String);Override;
procedure SaveData; Override;
procedure SaveHeadData;Override;
end;
var
Frm_Pm_FakePc_B: TFrm_Pm_FakePc_B;
implementation
{$R *.DFM}
uses Sys_Global,Pm_FakePc_D,Sys_Hint,Pm_FakePc_D2, Pm_FakePc_P;
procedure TFrm_Pm_FakePc_B.InitControls;
begin//初始化Form上的控件
inherited;
//这两个参数是回传到基类后控制价格及金额的显示格式
AmountFields:='Amount,';
PriceFields:='Price,';
if (showflag=True) and (status<>'Add') then
exit;
if status<>'Add' then
begin
Extedt_VendorCode.text:=AdoQry_Head.fieldbyname('VendorCode').asstring;
lbl_VendorName.Caption:=AdoQry_Head.fieldbyname('VendorName').asstring;
Extedt_Pcno.text:=AdoQry_Head.fieldbyname('pcno').asstring;
Extedt_FakePcno.text:=AdoQry_Head.fieldbyname('FakePcno').asstring;
tmp_FakePcno:=AdoQry_Head.fieldbyname('FakePcno').asstring;
if AdoQry_Head.fieldbyname('pcType').asinteger=0 then
cmbbx_PcType.Itemindex:=0
else
cmbbx_PcType.Itemindex:=1;
if AdoQry_Head.fieldbyname('hastax').asinteger=0 then
cmbbx_Hastax.Itemindex:=0
else
cmbbx_Hastax.Itemindex:=1;
lbl_taxrate.Caption:=AdoQry_Head.fieldbyname('taxrate').asstring+'%';
taxrate:=AdoQry_Head.fieldbyname('taxrate').asstring;
medt_Date.text:=AdoQry_Head.fieldbyname('pcdate').asstring;
Extedt_Signlocation.text:=AdoQry_Head.fieldbyname('signlocation').asstring;
initcmbbx_PoTermSet;
end
else
begin
Extedt_VendorCode.text:='';
lbl_VendorName.Caption:='';
Extedt_Pcno.text:='';
Extedt_FakePcno.text:='';
cmbbx_PcType.Itemindex:=0;
cmbbx_Hastax.Itemindex:=0;
lbl_taxrate.Caption:='';
taxrate:='0';
medt_Date.text:=LoginDate;
Extedt_Signlocation.text:='美迪电器集团工业城';
initcmbbx_PoTermSet;
tmp_FakePcno:='%$##@';
end;
oldPoTermSet:='';
with AdoQry_Body do
begin
Close;
sql.clear;
sql.text:=
' select '+
' FakePcline.FakePcno,'+
' FakePcline.pclineno,'+
' FakePcline.ItemCode,'+
' FakePcline.qty,'+
' FakePcline.Price,'+
' FakePcline.Amount,'+
' FakePcline.Finishdate,'+
' FakePcline.remArk, '+
' Item.ItemName,'+
' Uom.UomName '+
' from FakePcline '+
' join Item on FakePcline.ItemCode=Item.ItemCode '+
' join Uom on Item.UomCode=Uom.UomCode '+
' where FakePcno='''+tmp_FakePcno+'''';
open;
end;
cmbbx_PoTermSet.OnExit(self);
end;
procedure TFrm_Pm_FakePc_B.initcmbbx_PoTermSet;
begin
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
'select PoTermSetCode,PoTermSetName from PoTermSet Order by PoTermSetCode ';
open;
First;
cmbbx_PoTermSet.clear;
while not eof do
begin
cmbbx_PoTermSet.Items.Add(fieldbyname('PoTermSetCode').asstring+' '+
fieldbyname('PoTermSetName').asstring);
next;
end;
cmbbx_PoTermSet.Itemindex:=0;
end;
end;
procedure TFrm_Pm_FakePc_B.Act_InsertLineExecute(Sender: TObject);
begin
Frm_Entry_Detail.SetFormParam(Extedt_Pcno.text,Extedt_FakePcno.text,inttostr(cmbbx_PcType.Itemindex),tmp_FakePcno,cmbbx_Hastax.text,'');
inherited;
end;
procedure TFrm_Pm_FakePc_B.FormCreate(Sender: TObject);
begin
inherited;
Frm_Entry_Detail:=TFrm_Pm_FakePc_D.Create(Self);//设置弹出Detail
Frm_Pm_FakePc_D2:=TFrm_Pm_FakePc_D2.Create(self);
end;
procedure TFrm_Pm_FakePc_B.SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String);
begin//指明当前状态,定义Enable=True的控件
inherited;
if CurrentStatus='Add' then
begin
AnswerStatus:='Add';
EnableControls:='Extedt_VendorCode,Extedt_Pcno,Extedt_FakePcno,Extedt_memo,'+
'cmbbx_PcType,cmbbx_Hastax,medt_Date,Extedt_Signlocation,cmbbx_PoTermSet,';
SetFocus_Control:=Extedt_VendorCode;
end
else if CurrentStatus='ReadOnly' then
begin
AnswerStatus:='ReadOnly';
EnableControls:='';
end;
end;
procedure TFrm_Pm_FakePc_B.Extedt_PcnoKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if Key=120 then
begin
Frm_Sys_Hint:=TFrm_Sys_Hint.Create(nil);
Frm_Sys_Hint.InitForm(DBConnect,
' select pc.pcno as ''采购合同合号'''
+',pc.pcdate as ''下单日期'''
+',Vendor.VendorName as ''供应商名称'''
+' from pc '+
' join Vendor on pc.VendorCode=Vendor.VendorCode '+
' where pc.VendorCode='''+Extedt_VendorCode.text+''''+
' and pcdate>='''+datetostr(incMonth(strtodate(LoginDate),-6))+''''+
' Order by pcno ');
if Frm_Sys_Hint.ShowModal=mrOk then
TEdit(Sender).Text:=Frm_Sys_Hint.GetValueByFieldIndex(0);
Frm_Sys_Hint.Release;
end;
end;
procedure TFrm_Pm_FakePc_B.Extedt_PcnoExit(Sender: TObject);
begin
inherited;
if Extedt_Pcno.text<>'' then
begin
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
'select pcno from pc '+
' where VendorCode='''+Extedt_VendorCode.text+''''+
' and pcno='''+Extedt_Pcno.text+'''';
open;
if recordCount<1 then
begin
DispInfo('该系统合同不存在或供应商不正确!',1);
twincontrol(sender).setfocus;
abort;
end;
if Extedt_FakePcno.text='' then
Extedt_FakePcno.text:=Extedt_Pcno.text;
end;
end;
end;
procedure TFrm_Pm_FakePc_B.Extedt_FakePcnoExit(Sender: TObject);
begin
inherited;
if Trim(Extedt_FakePcno.text)='' then
begin
DispInfo('采购价格单号不允许为空!',1);
twincontrol(sender).setfocus;
abort;
end;
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
' select Count(*) as record '+
' from FakePc '+
' where FakePcno='''+Extedt_FakePcno.text+'''';
open;
if fieldbyname('record').asinteger>0 then
begin
DispInfo('该合同号己经存在!',1);
twincontrol(sender).setfocus;
abort;
end;
end;
end;
procedure TFrm_Pm_FakePc_B.cmbbx_PoTermSetExit(Sender: TObject);
var
i:integer;
begin
inherited;
if oldPoTermSet<>cmbbx_PoTermSet.text then
begin
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
' select top 8 * from PoTerm '+
' where PoTermSetCode='''+getCode(cmbbx_PoTermSet.text)+'''';
open;
First;
For I:=10 to Frm_Pm_FakePc_D2.ControlCount-1 do
begin
tedit(Frm_Pm_FakePc_D2.Controls[i]).text:=fieldbyname('PoTermName').asstring;
Frm_Pm_FakePc_D2.old_PoTermName[I-9]:=fieldbyname('PoTermName').asstring;
next;
end;
end;
oldPoTermSet:=cmbbx_PoTermSet.text;
end;
end;
procedure TFrm_Pm_FakePc_B.UsableVendorCodeCheck(Sender: TObject);
begin
inherited;
if Extedt_VendorCode.text<>'' then
begin
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
'select Vendortaxrate_Percent '+
' from Vendor '+
' where VendorCode='''+Extedt_VendorCode.text+'''';
open;
lbl_taxrate.Caption:=fieldbyname('Vendortaxrate_Percent').asstring+'%';
taxrate:=fieldbyname('Vendortaxrate_Percent').asstring;
end;
end;
end;
procedure TFrm_Pm_FakePc_B.SaveData;
procedure Add_Save;
var
body_Sqltext:string;
M:integer;
begin
//增加记录FakePc
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
' insert FakePc ( '+
'FakePcno,'+
'VendorCode,'+
'taxrate,'+
'hastax,'+
'pcdate,'+
'signlocation,'+
'pcType,'+
'pcno,'+
'term1,'+
'term2,'+
'term3,'+
'term4,'+
'term5,'+
'term6,'+
'term7,'+
'term8 ) '+
' Values('+
''''+Extedt_FakePcno.text+''','+
''''+Extedt_VendorCode.text+''','+
taxrate+','+
inttostr(cmbbx_Hastax.Itemindex)+','+
''''+medt_Date.text+''','+
''''+Extedt_Signlocation.text+''','+
inttostr(cmbbx_PcType.Itemindex)+','+
''''+Extedt_Pcno.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName1.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName2.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName3.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName4.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName5.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName6.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName7.text+''','+
''''+Frm_Pm_FakePc_D2.Extedt_PoTermName8.text+''')';
execsql;
end;
//通过循环组合成增加表FakePcLIEN的SQL语句
with AdoQry_Body do
begin
AdoQry_Body.First;
body_Sqltext:='';
for M:=0 to recordCount-1 do
begin
body_Sqltext:=body_Sqltext+
' insert FakePcline('+
'FakePcno,'+
'pclineno,'+
'ItemCode,'+
'qty,'+
'Price,'+
'Amount,'+
'Finishdate,'+
'remArk)'+
' Values('+
''''+Extedt_FakePcno.text+''','+
inttostr(M+1)+','+
''''+fieldbyname('ItemCode').asstring+''','+
''''+fieldbyname('qty').asstring+''','+
''''+fieldbyname('Price').asstring+''','+
''''+fieldbyname('Amount').asstring+''','+
''''+fieldbyname('Finishdate').asstring+''','+
''''+fieldbyname('remArk').asstring+''') ';
next;
end;
end;
//增加记录FakePcLINE
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
body_Sqltext;
execsql;
end;
end;
begin
inherited;
if AdoQry_Body.IsEmpty then
begin
DispInfo('新增的合同没有记录,不允许保存!',1);
abort;
end;
AdoQry_Body.Connection.beginTrans;
try
if status='Add' then
Add_Save
else
begin
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=
' delete from FakePcline where FakePcno='''+tmp_FakePcno+''''+
' delete from FakePc where FakePcno='''+tmp_FakePcno+'''';
execsql;
end;
Add_Save;
DispInfo(' 存盘成功! ',3);
end;
AdoQry_Body.Connection.CommitTrans;
except
begin
AdoQry_Body.Connection.RollBackTrans;
DispInfo(' 存盘不成功,请稍后再试! ',1);
abort;
end;
end;
end;
procedure TFrm_Pm_FakePc_B.FormDestroy(Sender: TObject);
begin
inherited;
Frm_Pm_FakePc_D2.Release;
end;
procedure TFrm_Pm_FakePc_B.Act_PreviewExecute(Sender: TObject);
begin
// inherited;
Frm_Pm_FakePc_P:=TFrm_Pm_FakePc_P.Create(Application);
Frm_Pm_FakePc_P.GetDataSource(DbConnect,Trim(Extedt_FakePcno.Text),'Preview',MenuId);
end;
procedure TFrm_Pm_FakePc_B.Act_PrintExecute(Sender: TObject);
begin
// inherited;
Frm_Pm_FakePc_P:=TFrm_Pm_FakePc_P.Create(Application);
Frm_Pm_FakePc_P.GetDataSource(DbConnect,Trim(Extedt_FakePcno.Text),'Print',MenuId);
end;
procedure TFrm_Pm_FakePc_B.FormActivate(Sender: TObject);
begin
inherited;
TlBtn_Locate.Action:=Act_Property;
end;
procedure TFrm_Pm_FakePc_B.Act_PropertyExecute(Sender: TObject);
begin
// inherited;
Frm_Pm_FakePc_D2.Showmodal;
end;
procedure TFrm_Pm_FakePc_B.SaveHeadData;
begin
inherited;
with AdoQry_Head do
begin
fieldbyname('VendorCode').asstring:=Extedt_VendorCode.text;
fieldbyname('VendorName').asstring:=lbl_VendorName.Caption;
fieldbyname('FakePcno').asstring:=Extedt_FakePcno.text;
fieldbyname('pcdate').asstring:=medt_Date.text;
end;
//此程序不能做这一事件,因为用了CASE语句,所以不能增加
end;
procedure TFrm_Pm_FakePc_B.Extedt_FakePcnoKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
If (Key=120) Then
CommonHint(Sender,AdoQry_Body,'pcdate','合同日期','pcno','采购价格单号',
'pc',' VendorCode='+quotedstr(Extedt_VendorCode.text));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -