1857 lines
80 KiB
ObjectPascal
1857 lines
80 KiB
ObjectPascal
unit CX_YFZLFXB;
|
|
{
|
|
部件名称:应付(YF3.MFC)
|
|
单元名称:应付帐款帐龄分析
|
|
功能说明:
|
|
技术说明:支持多会计单位查询
|
|
使用方法:
|
|
注意事项:
|
|
支持平台:SQL Server 2000 + Oracle
|
|
更新记录:
|
|
2004-11-11 yuxianming
|
|
增加查询条件‘分析预付账款’,选中后只分析应付账款有借方余额的单位。
|
|
2005-06-29 喻忠超
|
|
允许按记账日期进行分析。
|
|
2006-11-16 linfeng
|
|
调整程序,原来账龄期是根据ZLQ表的记录进行账龄分析的,
|
|
账龄期的取数调整为根据根据SFZLQ表获得账龄期
|
|
}
|
|
interface
|
|
|
|
uses
|
|
CX_YFZLFXB_d, CX_YFZLFXB_m, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
BaseQryCard, marsCap, Db, DBTables, gtQuery, RXCalc, Menus, RXCtrls, ExtCtrls,
|
|
DBSBtn, Grids, DBGrids, RXDBCtrl, Buttons, StdCtrls, COMCtrls,
|
|
RxDBCOMb, DBCtrls, Mask, ToolEdit, ImgList, ToolWin, RxDBGrid,
|
|
gtReportBuilder, gtrClasses, gtReportDocument, gtCheckedCombo, gtStandard, gtDBControls, gtEdit,
|
|
gtSystem, gtToolBar, Datetime, xmldom, XMLIntf, msxmldom, XMLDoc, DBAccess,
|
|
Uni, gtDB_Uni, MemDS, DateUtils, MISPROUtils;
|
|
|
|
type
|
|
TfrmCX_YFZLFXB = class (TfrmBaseQryCard)
|
|
qryTmp: TgtQuery;
|
|
qryZHKZ: TgtQuery;
|
|
lblCKRQ: TgtLabel;
|
|
Label1: TgtLabel;
|
|
Label2: TgtLabel;
|
|
lbl1: TgtLabel;
|
|
chkOutputMX: TgtDBCheckBox;
|
|
datCKRQ: TgtDBDateEdit;
|
|
edtGYSID: TgtDBEdit;
|
|
cbxKJDW: TgtDBCheckedCombo;
|
|
cbxPXFS: TgtDBComboBox;
|
|
cbxHB: TgtDBComboBox;
|
|
lblPXFS: TgtLabel;
|
|
lblTitle: TgtLabel;
|
|
chkBL: TgtDBCheckBox;
|
|
qryZLQ: TgtQuery;
|
|
dsZLQ: TgtDataSource;
|
|
qryZLQSFZLQ_ZLXH: TFloatField;
|
|
qryZLQSFZLQ_ZLMC: TStringField;
|
|
qryZLQSFZLQ_ZLQ: TFloatField;
|
|
lbl2: TgtLabel;
|
|
cbxGYSFL: TgtDBCheckedCombo;
|
|
Label4: TgtLabel;
|
|
cbxFXDX: TgtDBCheckedCombo;
|
|
edtGYSMC: TgtDBEdit;
|
|
gtLabel1: TgtLabel;
|
|
cbxKM: TgtDBComboBox;
|
|
Label5: TgtLabel;
|
|
cbxZRZX: TgtDBCheckedCombo;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure grdGriDDblCliCK(Sender: TObject);
|
|
procedure grdGridGetRowState(Sender: TObject; Field: TField;
|
|
var BackgroundColor: string; var RowInSum: TInSum);
|
|
private
|
|
{ Private dEClarations }
|
|
FXByJZRQ: Boolean; //是否按记账日期进行分析
|
|
bInit: Boolean;
|
|
function MultiKJDW:Boolean;
|
|
function GetKJDWs:String;
|
|
property sKJDWs: String read GetKJDWs;
|
|
procedure CreatGridColumns;
|
|
procedure GetKM;
|
|
public
|
|
dmlCX_YFZLFXB_m: TdmlCX_YFZLFXB_m;
|
|
dmlCX_YFZLFXB_d: TdmlCX_YFZLFXB_d;
|
|
procedure FormInit; override;
|
|
function ConditionValid:Boolean;override;
|
|
procedure Run; override;
|
|
function CallBack(aID: TCallBackID; aParam: String=''): String; override;
|
|
{ Public dEClarations }
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses JsERPUtils,CWUtils, BaseNavigator, BaseQry1, BaseTlb;
|
|
|
|
{$R *.DFM}
|
|
|
|
function AddFloatField(DataSet: TDataSet; FieldName,
|
|
DisplayLabel: string): TFloatField;
|
|
begin
|
|
Result := TFloatField.Create(DataSet);
|
|
Result.FieldName := FieldName;
|
|
Result.DisplayLabel := DisplayLabel;
|
|
Result.FieldKind := fkData;
|
|
Result.Size := 0;
|
|
Result.DataSet := DataSet;
|
|
end;
|
|
|
|
function AddStringField(DataSet: TDataSet; FieldName,
|
|
DisplayLabel: string; FieldSize: Integer): TStringField;
|
|
begin
|
|
Result := TStringField.Create(DataSet);
|
|
Result.FieldName := FieldName;
|
|
Result.DisplayLabel := DisplayLabel;
|
|
Result.FieldKind := fkData;
|
|
Result.Size := FieldSize;
|
|
Result.DataSet := DataSet;
|
|
end;
|
|
|
|
//==============================================================================
|
|
{ 内部过程/函数 }
|
|
//==============================================================================
|
|
function TfrmCX_YFZLFXB.GetKJDWs: String;
|
|
begin
|
|
Result:=Trim(cbxKJDW.Text);
|
|
end;
|
|
|
|
procedure TfrmCX_YFZLFXB.GetKM;
|
|
var
|
|
sKM,sSQL: string;
|
|
iYear: Integer;
|
|
begin
|
|
if bInit then exit;
|
|
|
|
if (pos(',',dmlCX_YFZLFXB_m.memTableKJDWID.AsString)<=0)
|
|
and (Trim(dmlCX_YFZLFXB_m.memTableKJDWID.AsString) <> '') then
|
|
begin
|
|
iYear := YEAROf(dmlCX_YFZLFXB_m.memTablECKRQ.AsDateTime);
|
|
sKM:=CWUtils.GetZHKZ(iYear,dmlCX_YFZLFXB_m.memTableKJDWID.AsString,'CW0002',False);
|
|
sSQL:='select distinct KJKM_KMID ,KJKM_MC from KJKM where KJKM_YEAR='+intToStr(iYear)
|
|
+ ' and KJKM_KJDWID='''+dmlCX_YFZLFXB_m.memTableKJDWID.AsString+'''';
|
|
if Trim(sKM)<>'' then
|
|
sSQL:=sSQL+' and '+GetWhereLead('KJKM_KMID',sKM)+'order by KJKM_KMID'
|
|
else
|
|
sSQL:=sSQL+' and 1<>1 order by KJKM_KMID';
|
|
JsERPUtils.TCBX.SetRxCBX(sSQL,True,cbxKM);
|
|
dmlCX_YFZLFXB_m.memTableKMID.AsString :=' ';
|
|
end
|
|
else
|
|
begin
|
|
cbxKM.BeginUpdate;
|
|
try
|
|
cbxKM.Items.Clear;
|
|
cbxKM.Values.Clear;
|
|
finally
|
|
cbxKM.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrmCX_YFZLFXB.MultiKJDW: Boolean;
|
|
begin
|
|
if pos(',',cbxKJDW.Text)>0 then Result:=True
|
|
else Result:=False;
|
|
end;
|
|
|
|
procedure TfrmCX_YFZLFXB.CreatGridColumns;
|
|
var
|
|
aColumn: TRxDBGridColumn;
|
|
iLoop: Integer;
|
|
i: Integer;
|
|
begin
|
|
// 获得帐龄期天数和名称
|
|
qryZLQ.Close;
|
|
qryZLQ.Open;
|
|
grdGrid.Columns.BeginUpdate;
|
|
try
|
|
grdGrid.Columns.Clear;
|
|
|
|
dmlCX_YFZLFXB_d.qryResult.Close;
|
|
for i := dmlCX_YFZLFXB_d.qryResult.FieldCount - 1 downto 0 do
|
|
begin
|
|
dmlCX_YFZLFXB_d.qryResult.Fields[i].Destroy;
|
|
end;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'XH';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '序号\C';
|
|
aColumn.Visible := False;
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'XH', '序号');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('XH').DisplayWidth := 10;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'XH1';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '序号1\C';
|
|
aColumn.Visible := False;
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'XH1', '序号');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('XH1').DisplayWidth := 10;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'FLAG';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '标志\C';
|
|
aColumn.Visible := False;
|
|
aColumn.Width := 64;
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'FLAG','标志',1);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('FLAG').DisplayWidth := 10;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'GYS';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '供应商\C';
|
|
aColumn.Width := 64;
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'GYS','供应商',80);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('GYS').DisplayWidth := 50;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'GYSID';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '供应商编码\C';
|
|
aColumn.Width := 64;
|
|
aColumn.Visible := False;
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'GYSID','供应商编码',8);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('GYSID').DisplayWidth := 15;
|
|
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'GYSMC';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '供应商名称\C';
|
|
aColumn.Width := 64;
|
|
aColumn.Visible := False;
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'GYSMC','供应商名称',120);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('GYSMC').DisplayWidth := 40;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'ZY';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '摘要\C';
|
|
aColumn.Width := 64;
|
|
aColumn.Visible := False;
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'ZY','摘要',250);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('ZY').DisplayWidth := 50;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'KJDW';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '会计单位\C';
|
|
aColumn.EditorType := etDropDown;
|
|
aColumn.Visible := False;
|
|
aColumn.Width := 64;
|
|
TGRD.SetGridColumn(grdGrid.FindColumnByField('KJDW'),'select KJDW_KJDWID, KJDW_JC from KJDW order by KJDW_KJDWID');
|
|
AddStringField(dmlCX_YFZLFXB_d.qryResult,'KJDW','会计单位',20);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('KJDW').DisplayWidth := 20;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'ZPZH';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '总凭证号\C';
|
|
aColumn.EditorType := etDropDown;
|
|
aColumn.Visible := False;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'ZPZH', '总凭证号');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('ZPZH').DisplayWidth := 10;
|
|
|
|
iLoop := 0;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'ZLQ'+FloatToStr(iLoop);
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := qryZLQSFZLQ_ZLMC.AsString+'\R\r\n金额\C';
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'ZLQ'+FloatToStr(iLoop), qryZLQSFZLQ_ZLMC.AsString);
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('ZLQ'+FloatToStr(iLoop)).DisplayWidth := 15;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'BL'+FloatToStr(iLoop);
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '\n%\C';
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'BL'+FloatToStr(iLoop), '%');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('BL'+FloatToStr(iLoop)).DisplayWidth := 6;
|
|
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'HJ';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '合计\C';
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'HJ', '合计');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('HJ').DisplayWidth := 15;
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'XYQN';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '付款期内\C';
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'XYQN', '付款期内');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('XYQN').DisplayWidth := 15;
|
|
|
|
|
|
aColumn := grdGrid.Columns.Add;
|
|
aColumn.FieldName := 'XYQW';
|
|
aColumn.Title.Alignment := taCenter;
|
|
aColumn.Title.Caption := '付款期外\C';
|
|
aColumn.EditorType := etNumber;
|
|
aColumn.Width := 64;
|
|
AddFloatField(dmlCX_YFZLFXB_d.qryResult, 'XYQW', '付款期外');
|
|
dmlCX_YFZLFXB_d.qryResult.FieldByName('XYQW').DisplayWidth := 15;
|
|
|
|
iLoop := 0;
|
|
qryZLQ.First;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
if dmlCX_YFZLFXB_m.memTableBL.AsString = 'Y' then
|
|
begin
|
|
grdGrid.FindColumnByField('BL'+FloatToStr(iLoop)).Visible := True;
|
|
grdGrid.FindColumnByField('ZLQ'+FloatToStr(iLoop)).Title.Caption := qryZLQSFZLQ_ZLMC.AsString+'\R\r\n金额\C';
|
|
end
|
|
else
|
|
begin
|
|
grdGrid.FindColumnByField('BL'+FloatToStr(iLoop)).Visible := False;
|
|
grdGrid.FindColumnByField('ZLQ'+FloatToStr(iLoop)).Title.Caption := qryZLQSFZLQ_ZLMC.AsString;
|
|
end;
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
finally
|
|
grdGrid.Columns.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
//==============================================================================
|
|
{ 模板相关事件/过程/函数 }
|
|
//==============================================================================
|
|
procedure TfrmCX_YFZLFXB.FormInit;
|
|
begin
|
|
inherited;
|
|
|
|
CWUtils.GetKJDW(cbxKJDW,CO_QUERYKJDW,GetUserOption('ZZU003'),False);
|
|
TCBX.SetRxCBX('select GYSFL_FLID,GYSFL_FLMC from GYSFL where 1=1 order by GYSFL_FLID', cbxGYSFL);
|
|
TCBX.SetRxCBX('select HB_HBID,HB_MC from HB order by HB_HBID',True,cbxHB);
|
|
FXByJZRQ := (GetUserOption('YFU001') = 'Y');
|
|
|
|
bInit := False;
|
|
GetKM;
|
|
|
|
end;
|
|
|
|
procedure TfrmCX_YFZLFXB.FormCreate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
bInit := True;
|
|
dmlCX_YFZLFXB_d := TdmlCX_YFZLFXB_d.Create(self);
|
|
dmlCX_YFZLFXB_m := TdmlCX_YFZLFXB_m.Create(self);
|
|
dmlResult := dmlCX_YFZLFXB_D;
|
|
dmlCondition := dmlCX_YFZLFXB_M;
|
|
// dmlMain:=dmlCondition;
|
|
grdGrid.DataSource := dmlCX_YFZLFXB_D.dsData;
|
|
|
|
|
|
AddReadOnlyComponent(edtGYSMC);
|
|
end;
|
|
|
|
procedure TfrmCX_YFZLFXB.FormDestroy(Sender: TObject);
|
|
begin
|
|
bInit := True;
|
|
FreeAndNil(dmlCX_YFZLFXB_d);
|
|
FreeAndNil(dmlcx_YFZLFXB_M);
|
|
inherited;
|
|
end;
|
|
|
|
function TfrmCX_YFZLFXB.CallBack(aID: TCallBackID; aParam: String): String;
|
|
var
|
|
sSQL: String;
|
|
begin
|
|
Result := Inherited CallBack(aID, aParam);
|
|
if aID=CBID_FieldChanged then
|
|
begin
|
|
if aParam='KJDWID' then
|
|
begin
|
|
sSQL := 'select ZRZX_ZRZXID, ZRZX_MC from ZRZX where ZRZX_MJBZ=''Y'' ';
|
|
if MultiKJDW then
|
|
sSQL := sSQL + ' and ZRZX_KJDWID='' '' '
|
|
else
|
|
sSQL := sSQL + ' and (ZRZX_KJDWID='' '' or ZRZX_KJDWID='''+dmlCX_YFZLFXB_m.memTableKJDWID.AsString+''') ';
|
|
sSQL := sSQL + ' order by ZRZX_ZRZXID ';
|
|
LoadRxCbx(sSQL, cbxZRZX);
|
|
dmlCX_YFZLFXB_m.memTableZRZXID.AsString := '';
|
|
|
|
GetKM;
|
|
end;
|
|
if aParam='SETKM' then
|
|
begin
|
|
GetKM;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TfrmCX_YFZLFXB.ConditionValid: Boolean;
|
|
begin
|
|
Result := inherited ConditionValid;
|
|
if not Result then Exit;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKJDWID.AsString) = '' then
|
|
begin
|
|
WarningMessageBox('会计单位不允许为空!');
|
|
cbxKJDW.SetFocus;
|
|
Result := False;
|
|
Exit;
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) ='' then
|
|
begin
|
|
WarningMessageBox('请选择货币!');
|
|
cbxHB.SetFocus;
|
|
Result := False;
|
|
exit;
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableCKRQ.AsDateTime =0 then
|
|
begin
|
|
WarningMessageBox('参考日期不允许为空!');
|
|
datCKRQ.SetFocus;
|
|
Result := False;
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
//按供应商输出帐龄分析表,
|
|
procedure TfrmCX_YFZLFXB.Run;
|
|
var
|
|
iLoop: Integer;
|
|
iYear: Integer;
|
|
fPriZLQ : Extended;
|
|
begin
|
|
inherited;
|
|
//查询时判断列表是否已经创建,如果未创建,且未设置账龄期,则提示,否则根据设置的账龄期创建列表
|
|
|
|
qryZLQ.Close;
|
|
qryZLQ.Open;
|
|
if qryZLQ.IsEmpty then
|
|
begin
|
|
WarningMessageBox('请先设置账龄期!');
|
|
Exit;
|
|
end
|
|
else
|
|
begin
|
|
CreatGridColumns;
|
|
end;
|
|
|
|
iYear := TKJQJ.GetYear(dmlCX_YFZLFXB_m.memTablECKRQ.AsDateTime, False);
|
|
if dmlCX_YFZLFXB_M.memTableSCMX.AsBoolean then
|
|
begin
|
|
grdGRID.ShowHint := True;
|
|
grdGrid.FindColumnByField('ZY').Visible := True;
|
|
grdGrid.FindColumnByField('ZY').Tag := 0;
|
|
end
|
|
else
|
|
begin
|
|
grdGRID.ShowHint := False;
|
|
grdGrid.FindColumnByField('ZY').Visible := False;
|
|
grdGrid.FindColumnByField('ZY').Tag := -1;
|
|
end;
|
|
grdGrid.FindColumnByField('KJDW').Visible :=MultiKJDW;
|
|
|
|
|
|
qryZLQ.Close;
|
|
qryZLQ.Open;
|
|
|
|
iLoop := 0;
|
|
qryZLQ.First;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
if dmlCX_YFZLFXB_m.memTableBL.AsString = 'Y' then
|
|
begin
|
|
grdGrid.FindColumnByField('BL'+FloatToStr(iLoop)).Visible := True;
|
|
grdGrid.FindColumnByField('ZLQ'+FloatToStr(iLoop)).Title.Caption := qryZLQSFZLQ_ZLMC.AsString+'\R\r\n金额\C';
|
|
end
|
|
else
|
|
begin
|
|
grdGrid.FindColumnByField('BL'+FloatToStr(iLoop)).Visible := False;
|
|
grdGrid.FindColumnByField('ZLQ'+FloatToStr(iLoop)).Title.Caption := qryZLQSFZLQ_ZLMC.AsString;
|
|
end;
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
|
|
with dmlcx_YFZLFXB_d.qryResult do
|
|
begin
|
|
|
|
iLoop := 0;
|
|
Close;
|
|
SQL.Clear;
|
|
SQL.Add('select 0.0 as XH,1.0 as XH1,''Y'' as FLAG,YFZK_GYSID||''|''||GYS_MC as GYS ,YFZK_GYSID as GYSID,GYS_MC as GYSMC, ');
|
|
SQL.Add(' '' '' as ZY,'' '' as KJDW,0.0 as ZPZH, ');
|
|
//循环账龄期
|
|
qryZLQ.First;
|
|
fPriZLQ := 0;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
//计算账龄期数据
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as ZLQ'+FloatToStr(iLoop) +',');
|
|
//计算比例:各账龄期除以合计
|
|
SQL.Add('case ');
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ' );
|
|
SQL.Add(' when 0 then 0 else ');
|
|
|
|
SQL.Add('round((round( ');
|
|
SQL.Add('sum(' );
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2)');
|
|
SQL.Add(' /');
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2))*100,2) end ' );
|
|
sql.Add(' as BL'+FloatToStr(iLoop) +',');
|
|
|
|
fPriZLQ := qryZLQSFZLQ_ZLQ.AsFloat;
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
//收款期内金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)>=0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as XYQN, ');
|
|
|
|
//收款期外金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)<0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as XYQW, ');
|
|
//取出总的金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2)as HJ, ');
|
|
//排序使用的金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2)as PXJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' left join ( ');
|
|
SQL.Add(' select FLNBH,sum(WJYSJE) as WJYSJE ');
|
|
SQL.Add('from (');
|
|
//应付账款
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
end
|
|
//预付账款
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end
|
|
else
|
|
begin
|
|
//应付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
SQL.Add(' union all ');
|
|
//预付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end;
|
|
|
|
SQL.Add(' )YFXX ');
|
|
SQL.Add(' group by FLNBH ');
|
|
|
|
SQL.Add(' )a on a.FLNBH=YFZK_FLNBH ');
|
|
|
|
SQL.Add(' where 1=1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZK_JZRQ<=:pCKRQ')
|
|
else
|
|
SQL.Add(' and YFZK_YWRQ<=:pCKRQ');
|
|
SQL.ADD(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID');
|
|
ParamByName('pGYSID').AsString := trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString);
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_GYSID,GYS_MC ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString='B' then //借方有余额
|
|
begin
|
|
SQL.Add ('having LT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString='Y' then //贷方有余额
|
|
begin
|
|
SQL.Add ('having GT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else
|
|
begin
|
|
SQL.Add ('having NE(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end;
|
|
if dmlCX_YFZLFXB_m.memTableSCMX.AsBoolean then
|
|
begin
|
|
SQL.Add(' union all ');
|
|
//一次性查出各账龄期得值
|
|
iLoop := 0;
|
|
if FXByJZRQ then
|
|
begin
|
|
SQL.Add('select 0.0 as XH,2.0 as XH1,''N'' as FLAG,case when ltrim(rtrim(YFZK_GHFPID)) <> '''' then convert(char(10),YFZK_JZRQ)||''#''||YFZK_GHFPID else convert(char(10),YFZK_JZRQ) end as GYS,YFZK_GYSID as GYSID,GYS_MC as GYSMC, ')
|
|
end
|
|
else
|
|
begin
|
|
SQL.Add('select 0.0 as XH,2.0 as XH1,''N'' as FLAG,case when ltrim(rtrim(YFZK_GHFPID)) <> '''' then convert(char(10),YFZK_YWRQ)||''#''||YFZK_GHFPID else convert(char(10),YFZK_YWRQ) end as GYS, ');
|
|
SQL.Add('YFZK_GYSID as GYSID,GYS_MC as GYSMC, ');
|
|
end;
|
|
SQL.Add(' YFZK_ZY as ZY,YFZK_KJDWID as KJDW,YFZK_PZNBH as ZPZH, ');
|
|
//循环账龄期
|
|
qryZLQ.First;
|
|
fPriZLQ := 0;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
SQL.Add('round( ');
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(',2) as ZLQ'+FloatToStr(iLoop) +',');
|
|
|
|
//计算比例:各账龄期除以合计
|
|
SQL.Add('case ');
|
|
SQL.Add('round( ');
|
|
// SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2) ' );
|
|
SQL.Add(' when 0 then 0 else ');
|
|
|
|
SQL.Add('round((round( ');
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(',2)');
|
|
SQL.Add(' /');
|
|
SQL.Add('round( ');
|
|
// SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2))*100,2) end as BL'+FloatToStr(iLoop) +',' );
|
|
|
|
fPriZLQ := qryZLQSFZLQ_ZLQ.AsFloat;
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
//收款期内金额
|
|
SQL.Add('round( ');
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)>=0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(',2) as XYQN, ');
|
|
|
|
//收款期外金额
|
|
SQL.Add('round( ');
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)<0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(',2) as XYQW, ');
|
|
//取出总的金额
|
|
SQL.Add('round( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2)as HJ, ');
|
|
SQL.Add(' PX.PXJE as PXJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' left join ( ');
|
|
SQL.Add(' select FLNBH,sum(WJYSJE) as WJYSJE ');
|
|
SQL.Add('from (');
|
|
//应付账款
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
end
|
|
//预付账款
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end
|
|
else
|
|
begin
|
|
//应付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
SQL.Add(' union all ');
|
|
//预付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end;
|
|
|
|
SQL.Add(' )YFXX ');
|
|
SQL.Add(' group by FLNBH ');
|
|
|
|
SQL.Add(' )a on a.FLNBH=YFZK_FLNBH ');
|
|
SQL.Add(' left join (');
|
|
//用于查询出总金额后,支持按金额大小排序
|
|
SQL.Add('select YFZK_GYSID as GYSID, ');
|
|
//取出总的金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2)as PXJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' left join ( ');
|
|
SQL.Add(' select FLNBH,sum(WJYSJE) as WJYSJE ');
|
|
SQL.Add('from (');
|
|
//应付账款
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
end
|
|
//预付账款
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end
|
|
else
|
|
begin
|
|
//应付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
SQL.Add(' union all ');
|
|
//预付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end;
|
|
|
|
SQL.Add(' )YFXX ');
|
|
SQL.Add(' group by FLNBH ');
|
|
|
|
SQL.Add(' )a on a.FLNBH=YFZK_FLNBH ');
|
|
|
|
SQL.Add(' where 1=1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZK_JZRQ<=:pCKRQ')
|
|
else
|
|
SQL.Add(' and YFZK_YWRQ<=:pCKRQ');
|
|
SQL.ADD(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID');
|
|
ParamByName('pGYSID').AsString := trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString);
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_GYSID ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString='B' then //借方有余额
|
|
begin
|
|
SQL.Add ('having LT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString='Y' then //贷方有余额
|
|
begin
|
|
SQL.Add ('having GT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else
|
|
begin
|
|
SQL.Add ('having NE(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end;
|
|
//排序金额统计完成
|
|
SQL.Add(' )PX on PX.GYSID = YFZK_GYSID ');
|
|
SQL.Add(' where 1=1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZK_JZRQ<=:pCKRQ')
|
|
else
|
|
SQL.Add(' and YFZK_YWRQ<=:pCKRQ');
|
|
SQL.ADD(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID');
|
|
ParamByName('pGYSID').AsString := trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString);
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString='B' then //借方有余额
|
|
begin
|
|
SQL.Add(' and LT(round( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2),0)');
|
|
end
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString='Y' then //贷方有余额
|
|
begin
|
|
SQL.Add(' and GT(round( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2),0)');
|
|
end
|
|
else
|
|
begin
|
|
SQL.Add(' and NE(round( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' ,2),0)');
|
|
end;
|
|
end;
|
|
SQL.Add(' union all ');
|
|
iLoop := 0;
|
|
SQL.Add('select 3.0 as XH,3.0 as XH1,''H'' as FLAG,''合计'' as GYS,'' '' as GYSID,'' '' as GYSMC, ');
|
|
SQL.Add(' '' '' as ZY,'' '' as KJDW,0.0 as ZPZH, ');
|
|
//循环账龄期
|
|
qryZLQ.First;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
SQL.Add('round(sum(ZLQ'+FloatToStr(iLoop)+'),2) as ZLQ'+FloatToStr(iLoop) +',');
|
|
//计算比例:各账龄期除以合计
|
|
SQL.Add('round(round(sum(ZLQ'+FloatToStr(iLoop)+'),2)/');
|
|
SQL.Add('round(sum(HJ),2)*100.0,2) as BL'+FloatToStr(iLoop) +',');
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
//收款期内金额
|
|
SQL.Add('round(sum(XYQN),2) as XYQN, ');
|
|
//收款期外金额
|
|
SQL.Add('round(sum(XYQW),2) as XYQW, ');
|
|
//取出总的金额
|
|
SQL.Add('round(sum(HJ),2) as HJ, ');
|
|
SQL.Add(' 0 as PXJE');
|
|
SQL.Add(' from (');
|
|
|
|
SQL.Add('select 3.0 as XH,3.0 as XH1,''H'' as FLAG,''合计'' as GYS,YFZK_GYSID as GYSID,'' '' as GYSMC, ');
|
|
SQL.Add(' '' '' as ZY,'' '' as KJDW,0.0 as ZPZH, ');
|
|
//循环账龄期
|
|
qryZLQ.First;
|
|
fPriZLQ := 0;
|
|
iLoop := 0;
|
|
while not qryZLQ.Eof do
|
|
begin
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as ZLQ'+FloatToStr(iLoop) +',');
|
|
|
|
//计算比例:各账龄期除以合计
|
|
SQL.Add('case ');
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ' );
|
|
SQL.Add(' when 0 then 0 else ');
|
|
|
|
SQL.Add('round((round( ');
|
|
SQL.Add('sum(' );
|
|
if FXByJZRQ then
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_JZRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_JZRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end
|
|
else
|
|
begin
|
|
if iLoop=0 then
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)<='+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ')
|
|
else
|
|
SQL.Add(' case when datediff(day,YFZK_YWRQ,:pCKRQ)>'+FloatToStr(fPriZLQ)+' and datediff(day,YFZK_YWRQ,:pCKRQ)<= '+FloatToStr(qryZLQSFZLQ_ZLQ.AsFloat)+' then ');
|
|
end;
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end + isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2)');
|
|
SQL.Add(' /');
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2))*100,2) end as BL'+FloatToStr(iLoop) +',' );
|
|
|
|
fPriZLQ := qryZLQSFZLQ_ZLQ.AsFloat;
|
|
inc(iLoop);
|
|
qryZLQ.Next;
|
|
end;
|
|
//收款期内金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)>=0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as XYQN, ');
|
|
|
|
//收款期外金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum(' );
|
|
SQL.Add(' case ');
|
|
SQL.Add(' when datediff(day,YFZK_DQRQ,:pCKRQ)<0 then ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end ');
|
|
SQL.Add(' +isnull(a.WJYSJE,0) ');
|
|
SQL.Add(' else 0 end) ');
|
|
SQL.Add(',2) as XYQW, ');
|
|
//取出总的金额
|
|
SQL.Add('round( ');
|
|
SQL.Add('sum( ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ')
|
|
else
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2)as HJ, ');
|
|
SQL.Add(' 0 as PXJE');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' left join ( ');
|
|
SQL.Add(' select FLNBH,sum(WJYSJE) as WJYSJE ');
|
|
SQL.Add('from (');
|
|
//应付账款
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'Y' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
end
|
|
//预付账款
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
begin
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end
|
|
else
|
|
begin
|
|
//应付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ<=:pCKRQ and YFZKFP_DFJZRQ>:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ<=:pCKRQ and YFZKFP_DFYWRQ>:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH ');
|
|
SQL.Add(' union all ');
|
|
//预付账款
|
|
SQL.Add(' select YFZK_FLNBH as FLNBH, ');
|
|
SQL.Add(' round(sum(isnull(-1*YFZKFP_FPJE,0)),2) as WJYSJE ');
|
|
SQL.Add(' from YFZK ');
|
|
SQL.Add(' left join GYS on GYS_GYSID=YFZK_GYSID ');
|
|
SQL.Add(' ,YFZKFP ');
|
|
SQL.Add(' where YFZK_FLNBH=YFZKFP_FLNBH2 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZKFP_JFJZRQ>:pCKRQ and YFZKFP_DFJZRQ<=:pCKRQ ')
|
|
else
|
|
SQL.Add(' and YFZKFP_JFYWRQ>:pCKRQ and YFZKFP_DFYWRQ<=:pCKRQ ');
|
|
SQL.Add(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR ');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID ');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID ');
|
|
ParamByName('pGYSID').AsString := dmlCX_YFZLFXB_m.memTableGYSID.AsString;
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_FLNBH');
|
|
end;
|
|
|
|
SQL.Add(' )YFXX ');
|
|
SQL.Add(' group by FLNBH ');
|
|
SQL.Add(' )a on a.FLNBH=YFZK_FLNBH ');
|
|
|
|
SQL.Add(' where 1=1 ');
|
|
if FXByJZRQ then
|
|
SQL.Add(' and YFZK_JZRQ<=:pCKRQ')
|
|
else
|
|
SQL.Add(' and YFZK_YWRQ<=:pCKRQ');
|
|
SQL.ADD(' and ' + GetWhereEqual('YFZK_KJDWID', sKJDWs, True));
|
|
SQL.Add(' and YFZK_YEAR=:pYEAR');
|
|
if trim(dmlCX_YFZLFXB_M.memTableHBID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_HBID= :pHBID');
|
|
ParamByName('pHBID').AsString := dmlCX_YFZLFXB_m.memTableHBID.AsString;
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and YFZK_GYSID= :pGYSID');
|
|
ParamByName('pGYSID').AsString := trim(dmlCX_YFZLFXB_m.memTableGYSID.AsString);
|
|
end;
|
|
if Trim(dmlCX_YFZLFXB_m.memTableGYSFL.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('GYS_FL', dmlCX_YFZLFXB_m.memTableGYSFL.AsString));
|
|
end;
|
|
if trim(dmlCX_YFZLFXB_m.memTableKMID.AsString) <> '' then
|
|
begin
|
|
SQL.Add(' and ' + GetWhereLead('YFZK_KMID', dmlCX_YFZLFXB_m.memTableKMID.AsString));
|
|
end;
|
|
if (Trim(dmlCX_YFZLFXB_m.memtableZRZXID.AsString) <> '') then
|
|
SQL.Add(' and '+GetWhereEqual('YFZK_ZRZXID',dmlCX_YFZLFXB_m.memtableZRZXID.AsString));
|
|
SQL.Add(' group by YFZK_GYSID ');
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString='B' then //借方有余额
|
|
begin
|
|
SQL.Add ('having LT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and GT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else if dmlCX_YFZLFXB_M.memTableFXDX.AsString='Y' then //贷方有余额
|
|
begin
|
|
SQL.Add ('having GT(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and LT(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end
|
|
else
|
|
begin
|
|
SQL.Add ('having NE(');
|
|
SQL.Add('round(sum( ');
|
|
SQL.Add(' case when isnull(YFZK_YFP,'' '')<>''Y'' and NE(YFZK_WFPJE,0) then -1*(YFZK_WFPJE-YFZK_YFPJE) ');
|
|
SQL.Add(' else 0 end +isnull(a.WJYSJE,0)) ');
|
|
SQL.Add(' ,2) ');
|
|
SQL.Add(' ,0)');
|
|
end;
|
|
SQL.Add(' ) ZHHJ ');
|
|
//排序
|
|
if dmlCX_YFZLFXB_M.memTablePXFS.AsString = 'A' then
|
|
SQL.ADD('order by XH,GYSID,XH1 ');
|
|
if dmlCX_YFZLFXB_M.memTablePXFS.AsString = 'B' then// 应付金额由大到小排序
|
|
begin
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add('order by XH,PXJE,XH1 ')
|
|
else
|
|
SQL.Add('order by XH,PXJE Desc,XH1 ');
|
|
end
|
|
else if dmlCX_YFZLFXB_M.memTablePXFS.AsString = 'C' then
|
|
begin
|
|
if dmlCX_YFZLFXB_M.memTableFXDX.AsString = 'B' then
|
|
SQL.Add('order by XH,PXJE desc,XH1 ')
|
|
else
|
|
SQL.Add('order by XH,PXJE,XH1 ');
|
|
end;
|
|
ParamByName('pYEAR').AsInteger := iYear;
|
|
ParamByName('pCKRQ').AsDateTime := dmlCX_YFZLFXB_M.memTableCKRQ.AsDateTime;
|
|
Open;
|
|
end;
|
|
|
|
end;
|
|
|
|
//==============================================================================
|
|
{ 数据记录处理 }
|
|
//==============================================================================
|
|
//==============================================================================
|
|
{ 控件事件 }
|
|
//==============================================================================
|
|
|
|
//双击记录显示凭证
|
|
procedure TfrmCX_YFZLFXB.grdGriDDblCliCK(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if grdGrid.DataSource.DataSet.fieldByName('ZPZH').AsInteger <> 0 then
|
|
DisPLayPZ(grdGrid.DataSource.DataSet.fieldByName('KJDW').AsString,
|
|
grdGrid.DataSOurce.DataSet.FieldByName('ZPZH').AsInteger,Self);
|
|
end;
|
|
|
|
//底色
|
|
procedure TfrmCX_YFZLFXB.grdGridGetRowState(Sender: TObject; Field: TField;
|
|
var BackgroundColor: string; var RowInSum: TInSum);
|
|
begin
|
|
inherited;
|
|
if grdGrid.DataSource.DataSet.fieldByName('FLAG').AsString = 'Y' then
|
|
BaCKgroundColor := 'YFU005'
|
|
else if grdGrid.DataSource.DataSet.fieldByName('FLAG').AsString ='H' then//合计
|
|
BaCKgroundColor := 'XTS100';
|
|
end;
|
|
|
|
//==============================================================================
|
|
{ 查询条件 }
|
|
//==============================================================================
|
|
//==============================================================================
|
|
{ 局部菜单 }
|
|
//==============================================================================
|
|
|
|
end.
|
|
|