📄 sal_enter_salecontract.pas
字号:
unit Sal_Enter_SaleContract;
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_Sal_Enter_SaleContract = Class(TFrm_Base_Entry_Body)
Label5: TLabel;
Edt_RemArk: TEdit;
Label7: TLabel;
DBTxt_ItemName: TDBText;
ActionList1: TActionList;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label6: TLabel;
Edt_CustomerName: TEdit;
Edt_PayTermName: TEdit;
Edt_SlcLineAddressName: TEdit;
Edt_TaxRate_Percent: TEdit;
Edt_SlcAddress: TEdit;
MEdt_SlcDate: TMaskEdit;
Edt_DeptName: TEdit;
Edt_SaleEmployeeName: TEdit;
Edt_CurrencyName: TEdit;
AdoQry_BodySlcNo: TStringField;
AdoQry_BodySlcLineNo: TIntegerField;
AdoQry_BodyItemCode: TStringField;
AdoQry_BodyStArtDate: TDateTimeField;
AdoQry_BodyendDate: TDateTimeField;
AdoQry_BodyStArtQty: TFloatField;
AdoQry_BodyendQty: TFloatField;
AdoQry_BodyNoTaxPrice: TFloatField;
AdoQry_BodyTaxPrice: TFloatField;
AdoQry_BodyReferencedPrice: TIntegerField;
AdoQry_BodyLinestatus: TIntegerField;
AdoQry_BodySlcLineRemArk: TStringField;
AdoQry_BodyLastOperationTime: TDateTimeField;
AdoQry_BodyCheckFlag: TIntegerField;
AdoQry_BodyItemName: TStringField;
AdoQry_BodyUomName: TStringField;
Edt_SaleTypeName: TEdit;
Edt_CustomerCode: TLinkEdit;
Edt_CurrencyCode: TLinkEdit;
Edt_SlcLineAddresSCode: TLinkEdit;
Edt_PayTermCode: TLinkEdit;
Edt_SaleTypeCode: TLinkEdit;
Edt_DeptCode: TLinkEdit;
Edt_SaleEmployeeCode: TLinkEdit;
chb_Overdue: TCheckBox;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
procedure IntegerCheck(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Edt_SaleTypeCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_SaleTypeCodeExit(Sender: TObject);
procedure Edt_PayTermCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_PayTermCodeExit(Sender: TObject);
procedure Edt_SlcLineAddresSCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_CustomerCodeExit(Sender: TObject);
procedure Edt_DeptCodeExit(Sender: TObject);
procedure Edt_SlcLineAddresSCodeExit(Sender: TObject);
procedure Edt_SaleEmployeeCodeExit(Sender: TObject);
procedure Edt_CurrencyCodeExit(Sender: TObject);
procedure Act_InsertLineExecute(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure Edt_CustomerCodeEnter(Sender: TObject);
procedure Edt_SlcLineAddresSCodeButtonClick(Sender: TObject);
procedure LinkEdit1ButtonClick(Sender: TObject);
procedure Edt_PayTermCodeButtonClick(Sender: TObject);
procedure Edt_SaleTypeCodeButtonClick(Sender: TObject);
procedure chb_OverdueClick(Sender: TObject);
procedure Act_SaveExecute(Sender: TObject);
private
Enter_CustomerCode:String;
procedure GetCustomerItem(CustomerCode:String);
{ Private declarations }
public
{ Public declarations }
StrinGlist:TstrinGlist;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String); Override;//设置各种状态下那些控件Enable
procedure InitControls; Override;//初始化Form上所有控件
procedure SaveData; Override;//把表头控件写入缓存,不要Post
end;
var
Frm_Sal_Enter_SaleContract: TFrm_Sal_Enter_SaleContract;
TaxRate_Percent:String;
implementation
uses Sal_Enter_SaleContract_D,Sys_Global;
{$R *.DFM}
{ TFrm_Pm_Pc_Entry_D }
procedure TFrm_Sal_Enter_SaleContract.InitControls;
var
SlcNo,SqlText:string;
begin
if Status='Add' then
SetFocus_Control:=Edt_CustomerCode
else
SetFocus_Control:=Edt_RemArk;
// ExtendCaption:=False;
inherited;
Edt_CustomerName.Enabled := False;
Edt_DeptName.Enabled :=False;
Edt_SlcLineAddressName.Enabled :=False;
Edt_SaleEmployeeName.Enabled :=False;
Edt_PayTermName.Enabled :=False;
Edt_CurrencyName.Enabled :=False;
Edt_SaleTypeName.Enabled :=False;
if Status<>'Add' then
SlcNo:=AdoQry_Head.fieldbyname('SlcNo').AsString
else
SlcNo:='';
With AdoQry_Head do
begin
if Status<>'Add' then
begin
Act_InsertLine.Enabled := True;
if Status='ReadOnly' then
Act_InsertLine.Enabled := False;
MEdt_SlcDate.Text := fieldbyname('SlcDate').asstring;
Edt_TaxRate_Percent.Text := fieldbyname('TaxRate_Percent').asstring;
Edt_CustomerCode.Text := fieldbyname('CustomerCode').asstring;
Edt_CustomerName.Text := fieldbyname('CustomerName').asstring;
Edt_CurrencyCode.Text := fieldbyname('CurrencyCode').asstring;
Edt_CurrencyName.Text := fieldbyname('CurrencyName').asstring;
Edt_RemArk.Text := fieldbyname('RemArk').asstring;
end
else
begin
Act_InsertLine.Enabled := True;
MEdt_SlcDate.Text := Formatdatetime('yyyy.mm.dd',Date());
Edt_SaleTypeCode.Text := '';
Edt_TaxRate_Percent.Text := '';
Edt_CustomerCode.Text := '';
Edt_CustomerName.Text := '';
Edt_SlcLineAddresSCode.Text := '';
Edt_SlcLineAddressName.Text := '';
Edt_SaleEmployeeCode.Text := '';
Edt_SaleEmployeeName.Text := '';
Edt_PayTermCode.Text := '';
Edt_PayTermName.Text := '';
Edt_CurrencyCode.Text := '';
Edt_CurrencyName.Text := '';
Edt_SlcAddress.Text := '';
Edt_RemArk.Text := '';
Edt_SaleTypeName.Text :='';
end;
end;
AdoQry_Body.Close;
if UpperCase(Status)=upperCase('Add') then
begin
SqlText:=' Select Top 0 Sa_SaleContractLine.* ,Item.ItemName,Uom.UomName '
+' From Sa_SaleContractLine '
+' Join Item '
+' On Item.ItemCode=Sa_SaleContractLine.ItemCode '
+' Join Uom '
+' On Item.UomCode=Uom.UomCode';
end
else
begin
SqlText:=' Select Sa_SaleContractLine.* ,Item.ItemName,Uom.UomName '
+' From Sa_SaleContractLine '
+' Join Item '
+' On Item.ItemCode=Sa_SaleContractLine.ItemCode '
+' Join Uom '
+' On Item.UomCode=Uom.UomCode '
+' Where SlcNo='''+SlcNo+''' ';
end;
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
if status<>'Add' then
begin
chb_Overdue.Enabled:=True;
end;
end;
procedure TFrm_Sal_Enter_SaleContract.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String);
begin
inherited;
IF Status='Add' then
EnableControls:=' MEdt_SlcDate,Edt_SaleTypeCode,'
+' Edt_TaxRate_Percent, Edt_CustomerCode, Edt_DeptCode,'
+' Edt_SlcLineAddresSCode, Edt_SaleEmployeeCode, Edt_PayTermCode,'
+' Edt_CurrencyCode, Edt_SlcAddress, Edt_RemArk,';
end;
procedure TFrm_Sal_Enter_SaleContract.FormCreate(Sender: TObject);
begin
inherited;
Frm_Sal_Enter_SaleContract_D:=TFrm_Sal_Enter_SaleContract_D.Create(Self);//设置弹出Detail
Frm_Entry_Detail:=Frm_Sal_Enter_SaleContract_D;//设置弹出Detail
StrinGlist:=TStrinGlist.Create;
end;
procedure TFrm_Sal_Enter_SaleContract.SaveData;
var
SqlText:String;
i:integer;
SlcNo : String;
begin
inherited;
If Status='Add' then
begin
SqlText := 'select * from Sa_SaleContract '
+' where CustomerCode='+QuotedStr(Edt_CustomerCode.Text);
ExecuteSQl(AdoQry_Tmp,SqlText,0);
if AdoQry_Tmp.RecordCount>0 then
begin
DispInfo('已存在该客户的销售价格表!',3);
Edt_CustomerCode.SetFocus;
abort;
end;
end;
if (Status='Add') then
SlcNo := GetAllTypeOrderNo(DbConnect,1)
else SlcNo := AdoQry_Head.fieldbyname('SlcNo').AsString;
if (Status='Add') then
begin
if Trim(edt_CustomerCode.text) ='' then
begin
DispInfo('销售客户不能为空!',3);
edt_CustomerCode.SetFocus;
abort;
end;
if Trim(edt_taxrate_Percent.Text)='' then
begin
DispInfo('销售税率不能为空!',3);
edt_taxrate_Percent.SetFocus;
abort;
end;
if Trim(edt_CurrencyCode.text)='' then
begin
DispInfo('货币不能为空!',3);
edt_CurrencyCode.SetFocus;
abort;
end;
end;
IF (AdoQry_Body.RecordCount=0) And (status='Add') Then
begin
DispInfo('没有订单行数据,不能保存!',1);
Abort;
end;
DbConnect.beginTrans;
Try
AdoQry_Tmp.Close;
If (Status='Add') Then
begin
Application.ProcessMessages;
SqlText:='Insert Sa_SaleContract '
+' (SlcNo,CustomerCode,'
+' CurrencyCode, '
+' SlcDate,RemArk,CreateDate,'
+' CreateEmployeeCode,EditDate, '
+' EdItEmployeeCode,TaxRate_Percent)'
+' Values('
+''''+SlcNo+''','
+''''+Trim(Edt_CustomerCode.Text)+''','
+''''+Trim(Edt_CurrencyCode.Text)+''','
+''''+Trim(MEdt_SlcDate.Text)+''','
+''''+Trim(Edt_RemArk.Text)+''','
+''''+Formatdatetime('yyyy.mm.dd',Date())+''','
+''''+UserCode+''','
+''''+Formatdatetime('yyyy.mm.dd',Date())+''','
+''''+UserCode+''','
+''''+Trim(Edt_TaxRate_Percent.Text)+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL; // Insert Sa_SaleContract Table
saveSalContractHistory(dbconnect,SlcNo,userCode,0);
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
SqlText:='Insert Sa_SaleContractLine '
+' (SlcNo,SlcLineNo,ItemCode,StArtDate,endDate,StArtQty,endQty,'
+' NoTaxPrice,TaxPrice,ReferencedPrice,Linestatus,'
+' SlcLineRemArk,Lastoperationtime,CheckFlag)'
+'Values('
+''''+SlcNo+''','
+''''+IntToStr(AdoQry_Body.fieldbyname('SlcLineNo').AsInteger)+''','
+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('StArtDate').AsDateTime)+''','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('endDate').AsDateTime)+''','
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -