📄 sal_enter_passsalecontract.pas
字号:
unit Sal_Enter_PassSaleContract;
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_Sal_Enter_PassSaleContract = Class(TFrm_Base_Check)
DBText2: TDBText;
Label2: TLabel;
AdoQry_HeadcustomerCode: TStringField;
AdoQry_HeadcustomerName: TStringField;
AdoQry_Headslcno: TStringField;
AdoQry_Headslcdate: TDateTimeField;
AdoQry_HeadItemCode: TStringField;
AdoQry_HeadItemName: TStringField;
AdoQry_HeadItemflag: TStringField;
AdoQry_HeadstArtdate: TDateTimeField;
AdoQry_Headenddate: TDateTimeField;
AdoQry_HeadstArtqty: TFloatField;
AdoQry_Headendqty: TFloatField;
AdoQry_HeadnotaxPrice: TFloatField;
AdoQry_HeadtaxPrice: TFloatField;
AdoQry_HeadreferencedPrice: TIntegerField;
AdoQry_Headlinestatus: TIntegerField;
AdoQry_HeadslclineremArk: TStringField;
AdoQry_Headcheckflag: TIntegerField;
AdoQry_Headtaxrate: TStringField;
AdoQry_Headcustomerflag: TStringField;
AdoQry_Headslclineno: TIntegerField;
procedure FormDestroy(Sender: TObject);
procedure Act_CheckExecute(Sender: TObject);
procedure Act_CancelCheckExecute(Sender: TObject);
procedure DBGridEhDblClick(Sender: TObject);
procedure DBGridEhTitleClick(Column: TColumnEh);
procedure AdoQry_HeadBeforeInsert(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure Act_ExcelExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
Flag:Boolean;
{ Private declarations }
public
IsPriceRequestPass : Integer; //销售价格是否需要批准 0:不需要 1:需要
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
{ Public declarations }
end;
var Frm_Sal_Enter_PassSaleContract: TFrm_Sal_Enter_PassSaleContract;
i:integer;
implementation
uses Sys_Global,Sal_Enter_PassSaleContract_C;
{$R *.DFM}
procedure TFrm_Sal_Enter_PassSaleContract.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var sqltext,customerCode:string;
linestatus:integer;
begin
Application.ProcessMessages;
customerCode:='fgfhhghghghghhgjjhjh';
linestatus:=1000;
Inherited;
ExecuteSql(AdoQry_Tmp,'Select * from Sa_SalParam'
+' where SalParamCode='+QuotedStr('IsPriceRequestPass'),0);
IsPriceRequestPass := AdoQry_Tmp.fieldbyname('SalParamValueN').AsInteger;
If IsPriceRequestPass = 0 then
begin
Act_Check.Enabled := False;
Act_CancelCheck.Enabled := False;
Act_Modify.Enabled := False;
end;
try
with TFrm_Sal_Enter_PassSaleContract_C.Create(self) do
begin
AdoQry_tmp.Connection:=dbconnect;
showmodal;
if modalResult=mrok then
begin
customerCode:=iifValue(Trim(edt_CustomerCode.text)<>'',Trim(edt_CustomerCode.text),'fgfhhghghghghhgjjhjh');
linestatus:=cmb_Status.Itemindex;
end
end;
finally
Frm_Sal_Enter_PassSaleContract_C.Free;
end;
sqltext:='select sa_SaleContract.customerCode, '
+' customer.customerName, '
+' sa_SaleContract.customerCode+'' ''+isnull(customer.customerName,'' '') as customerflag, '
+' sa_SaleContractline.slcno, '
+' sa_SaleContractline.slclineno, '
+' sa_SaleContract.slcdate, '
+' sa_SaleContractline.ItemCode, '
+' Item.ItemName, '
+' sa_SaleContractline.ItemCode+'' ''+Item.ItemName as Itemflag, '
+' sa_SaleContractline.stArtdate, '
+' sa_SaleContractline.enddate, '
+' sa_SaleContractline.stArtqty, '
+' sa_SaleContractline.endqty, '
+' sa_SaleContractline.notaxPrice, '
+' sa_SaleContractline.taxPrice, '
+' sa_SaleContractline.referencedPrice,'
+' sa_SaleContractline.linestatus, '
+' sa_SaleContractline.slclineremArk, '
+' sa_SaleContractline.checkflag, '
+' taxrate=convert(varchAr,sa_SaleContract.taxrate_Percent) '
+' into #tmpContractPass '
+' from sa_SaleContractline '
+' join sa_SaleContract on sa_SaleContractline.slcno=sa_SaleContract.slcno '
+' left join customer on sa_SaleContract.customerCode=customer.customerCode '
+' left join Item on sa_SaleContractline.ItemCode=Item.ItemCode'
+' where (sa_SaleContractline.linestatus='+inttostr(linestatus)+' or '+inttostr(linestatus)+'=2 )'
+' and (sa_SaleContract.customerCode= '+quotedstr(customerCode)+' or '+quotedstr(customerCode)+'='+quotedstr('fgfhhghghghghhgjjhjh')+')';
Executesql(AdoQry_Head,sqltext,1);
selectfromsql:='select * from #tmpContractPass';
Executesql(AdoQry_Head,'select * from #tmpContractPass',0);
Flag:=False;
end;
procedure TFrm_Sal_Enter_PassSaleContract.FormDestroy(Sender: TObject);
begin
inherited;
Frm_Sal_Enter_PassSaleContract:=Nil;
end;
procedure TFrm_Sal_Enter_PassSaleContract.Act_CheckExecute(Sender: TObject);
function checkslcline:boolean;
var sqltext:string;
begin
Result:=False;
If (AdoQry_Head.fieldbyname('Checkflag').AsInteger=1) And (AdoQry_Head.fieldbyname('lineStatus').AsInteger=0) Then
begin
SqlText:=' Select * From sa_SaleContractline '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger);
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条销售价格表行已被删除,请刷新!',3);
Abort;
end
else
if AdoQry_Tmp.fieldbyname('lineStatus').AsInteger <> 0 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条销售价格表行状态已被其它用户修改,请刷新!',3);
Abort;
end;
Result:=True;
end;
end;
procedure Passslcline;
var sqlstring:string;
begin
sqlstring:='Update sa_SaleContractline '
+' set lineStatus=1 '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
+' And lineStatus=0 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
Sqlstring:='Update #tmpContractPass '
+' set lineStatus=1 '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
+' And lineStatus=0 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
end;
var
BookMArk:String;
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If DispInfo('确认批准选定的销售价格表吗?',2)='y' Then
begin
I:=1;
Try
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
Dbconnect.beginTrans;
if checkslcline then
begin
saveSalContractLineHistory(dbconnect,AdoQry_Head.fieldbyname('slcno').asstring,AdoQry_Head.fieldbyname('slclineno').asinteger,userCode,3);
Passslcline;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('lineStatus').AsInteger:=1;
AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
AdoQry_Head.Post;
I:=I+1;
DbConnect.CommitTrans;
AdoQry_Head.Next;
end
Else
begin
I:=I+1;
DbConnect.CommitTrans;
AdoQry_Head.Next;
end;
end;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
AdoQry_Head.BookMArk:=BookmArk;
Abort;
end;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Sal_Enter_PassSaleContract.Act_CancelCheckExecute(Sender: TObject);
function checkslcline:boolean;
var sqltext:string;
begin
Result:=False;
If (AdoQry_Head.fieldbyname('Checkflag').AsInteger=1)
And (AdoQry_Head.fieldbyname('lineStatus').AsInteger=1)
Then
begin
SqlText:=' Select * From sa_SaleContractline '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger);
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条销售价格表行已被删除,请刷新!',3);
abort;
end
else
if AdoQry_Tmp.fieldbyname('lineStatus').asfloat <> 1 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条销售价格表行状态已被其它用户修改,请刷新!',3);
abort;
end;
Result:=True;
end;
end;
procedure unPassslcline;
var sqlstring:string;
begin
Sqlstring:='Update sa_SaleContractline '
+' set lineStatus=0 '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
+' And lineStatus=1 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
Sqlstring:='Update #tmpContractPass '
+' set lineStatus=0 '
+' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
+' and slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
+' And lineStatus=1 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
end;
var
BookMArk:String;
I:Integer;
begin
inherited;
If AdoQry_Head.RecordCount=0 Then Abort;
BookMArk:=AdoQry_Head.BookmArk;
If DispInfo('确认取消批准选定销售价格表行吗?',2)='y' Then
begin
I:=1;
Try
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
DbConnect.beginTrans;
if checkslcline then
begin
saveSalContractLineHistory(dbconnect,AdoQry_Head.fieldbyname('slcno').asstring,AdoQry_Head.fieldbyname('slclineno').asinteger,userCode,4);
unPassslcline;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('lineStatus').AsInteger:=0;
AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
AdoQry_Head.Post;
I:=I+1;
AdoQry_Head.Next;
dbconnect.CommitTrans;
end
Else
begin
I:=I+1;
AdoQry_Head.Next;
DbConnect.CommitTrans;
end;
end;
Except
If DbConnect.InTransaction Then DbConnect.RollBackTrans;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
AdoQry_Head.BookMArk:=BookmArk;
Abort;
end;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Sal_Enter_PassSaleContract.DBGridEhDblClick(Sender: TObject);
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Abort;
If AdoQry_Head.fieldbyname('lineStatus').AsInteger=0 then
Act_CheckExecute(Act_Check)
Else
Act_CancelCheckExecute(Act_CancelCheck);
end;
procedure TFrm_Sal_Enter_PassSaleContract.DBGridEhTitleClick(Column: TColumnEh);
var
BookMArk:String;
begin
inherited;
If Trim(Column.Title.Caption)<>'标记' Then
Abort;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If Not Flag Then
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('Checkflag').AsInteger:=1;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end
Else
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end;
AdoQry_Head.BookmArk:=BookMArk;
Flag:=Not Flag;
end;
procedure TFrm_Sal_Enter_PassSaleContract.AdoQry_HeadBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
procedure TFrm_Sal_Enter_PassSaleContract.FormCreate(Sender: TObject);
begin
inherited;
ToolButton6.Action:=act_excel;
end;
procedure TFrm_Sal_Enter_PassSaleContract.Act_ExcelExecute(Sender: TObject);
begin
// inherited;
dbgridehtoexcel(dbgrideh);
end;
procedure TFrm_Sal_Enter_PassSaleContract.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
try
Executesql(AdoQry_tmp,'drop table #tmpContractPass',1);
except
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -