D10myBiaoqi/T01贸易生产计划/U_PlanProfitDetails.pas
2025-08-23 09:36:13 +08:00

450 lines
15 KiB
ObjectPascal

unit U_PlanProfitDetails;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit,
cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
dxBarBuiltInMenu, cxPC, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges,
U_BaseHelp, Vcl.Menus, Vcl.Clipbrd, DateUtils, dxSkinWXI,
dxScrollbarAnnotations, U_BaseList, System.ImageList, Vcl.ImgList;
type
TfrmPlanProfitDetails = class(TfrmBasehelp)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
ToolButton2: TToolButton;
ADOQueryMain: TADOQuery;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
Label3: TLabel;
OrderNo: TEdit;
Label2: TLabel;
Label6: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_HZ: TDataSource;
CDS_HZ: TClientDataSet;
Label1: TLabel;
ComTaiTou: TEdit;
ADOQueryPrint: TADOQuery;
ToolButton1: TToolButton;
PM_1: TPopupMenu;
N1: TMenuItem;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v2CRTime: TcxGridDBColumn;
Tv1Column27: TcxGridDBColumn;
Tv1Column23: TcxGridDBColumn;
v2Column2: TcxGridDBColumn;
v2FactoryName: TcxGridDBColumn;
Tv1Column2: TcxGridDBColumn;
v2OrderNo: TcxGridDBColumn;
Tv1Column3: TcxGridDBColumn;
Tv1Column24: TcxGridDBColumn;
Tv1Column20: TcxGridDBColumn;
Tv1Column21: TcxGridDBColumn;
Tv1Column4: TcxGridDBColumn;
Tv1Column5: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
Tv1Column7: TcxGridDBColumn;
Tv1Column8: TcxGridDBColumn;
Tv1Column9: TcxGridDBColumn;
Tv1Column10: TcxGridDBColumn;
Tv1Column30: TcxGridDBColumn;
Tv1Column11: TcxGridDBColumn;
Tv1Column12: TcxGridDBColumn;
Tv1Column13: TcxGridDBColumn;
Tv1Column14: TcxGridDBColumn;
Tv1Column15: TcxGridDBColumn;
Tv1Column16: TcxGridDBColumn;
Tv1Column26: TcxGridDBColumn;
Tv1Column17: TcxGridDBColumn;
Tv1Column18: TcxGridDBColumn;
Tv1Column25: TcxGridDBColumn;
Tv1Column1: TcxGridDBColumn;
Tv1Column28: TcxGridDBColumn;
Tv1Column29: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
Panel2: TPanel;
cxGrid2: TcxGrid;
TV2: TcxGridDBTableView;
cxGridDBColumn10: TcxGridDBColumn;
cxGridDBColumn12: TcxGridDBColumn;
cxGridDBColumn13: TcxGridDBColumn;
cxGridDBColumn14: TcxGridDBColumn;
cxGridDBColumn15: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
cxGrid3: TcxGrid;
TV3: TcxGridDBTableView;
cxGridDBColumn42: TcxGridDBColumn;
cxGridDBColumn46: TcxGridDBColumn;
cxGridDBColumn47: TcxGridDBColumn;
cxGridDBColumn50: TcxGridDBColumn;
cxGridDBColumn52: TcxGridDBColumn;
cxGridDBColumn53: TcxGridDBColumn;
cxGridDBColumn55: TcxGridDBColumn;
cxGridDBColumn56: TcxGridDBColumn;
cxGridDBColumn57: TcxGridDBColumn;
cxGridLevel3: TcxGridLevel;
ADOQuery3: TADOQuery;
ADOQuery2: TADOQuery;
CDS_2: TClientDataSet;
DS_2: TDataSource;
DS_3: TDataSource;
CDS_3: TClientDataSet;
TV2Column1: TcxGridDBColumn;
TV2Column2: TcxGridDBColumn;
TV2Column3: TcxGridDBColumn;
TV2Column4: TcxGridDBColumn;
Tv1Column19: TcxGridDBColumn;
TV2Column5: TcxGridDBColumn;
TV2Column6: TcxGridDBColumn;
TV3Column1: TcxGridDBColumn;
TV3Column2: TcxGridDBColumn;
cxSplitter1: TcxSplitter;
TV2Column7: TcxGridDBColumn;
TV3Column3: TcxGridDBColumn;
cxGrid4: TcxGrid;
TV4: TcxGridDBTableView;
cxGridDBColumn1: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
cxGridDBColumn5: TcxGridDBColumn;
cxGridDBColumn6: TcxGridDBColumn;
cxGridDBColumn7: TcxGridDBColumn;
cxGridDBColumn8: TcxGridDBColumn;
cxGridDBColumn9: TcxGridDBColumn;
cxGridDBColumn11: TcxGridDBColumn;
cxGridDBColumn16: TcxGridDBColumn;
cxGridDBColumn17: TcxGridDBColumn;
cxGridDBColumn18: TcxGridDBColumn;
cxGridDBColumn19: TcxGridDBColumn;
cxGridDBColumn20: TcxGridDBColumn;
cxGridDBColumn21: TcxGridDBColumn;
cxGridDBColumn22: TcxGridDBColumn;
cxGridDBColumn23: TcxGridDBColumn;
cxGridDBColumn24: TcxGridDBColumn;
cxGridDBColumn25: TcxGridDBColumn;
cxGridDBColumn26: TcxGridDBColumn;
cxGridDBColumn27: TcxGridDBColumn;
cxGridDBColumn28: TcxGridDBColumn;
cxGridDBColumn29: TcxGridDBColumn;
cxGridDBColumn30: TcxGridDBColumn;
cxGridDBColumn31: TcxGridDBColumn;
cxGridDBColumn32: TcxGridDBColumn;
cxGridDBColumn33: TcxGridDBColumn;
cxGridDBColumn34: TcxGridDBColumn;
cxGridDBColumn35: TcxGridDBColumn;
cxGridDBColumn36: TcxGridDBColumn;
cxGridDBColumn37: TcxGridDBColumn;
cxGridDBColumn38: TcxGridDBColumn;
cxGridLevel4: TcxGridLevel;
cxSplitter2: TcxSplitter;
DataSource1: TDataSource;
TV4Column1: TcxGridDBColumn;
Tv1Column22: TcxGridDBColumn;
ClientDataSet1: TClientDataSet;
DataSource2: TDataSource;
ADOQuery5: TADOQuery;
TV4Column2: TcxGridDBColumn;
TV4Column3: TcxGridDBColumn;
TV4Column4: TcxGridDBColumn;
Tv1Column31: TcxGridDBColumn;
Tv1Column32: TcxGridDBColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure OrderNoChange(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
procedure InitGrid();
procedure InitYFFGrid();
procedure InitZD();
public
fmanage, FZKType, FOrderNo, FMainID: string;
{ Public declarations }
RKFlag, FCYID, FUnit: string;
end;
var
frmPlanProfitDetails: TfrmPlanProfitDetails;
implementation
uses
U_DataLink, U_RtFun, U_ZDYHelp;
{$R *.dfm}
procedure TfrmPlanProfitDetails.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add('Select Amount=(Case when ISNULL(A.RegType,'''')=''收款'' then -1*Amount else Amount end)');
// sql.Add(',SSAmount=(Case when ISNULL(A.RegType,'''')=''收款'' then -1*Amount else Amount end)-ISNULL(A.SXFAmount,0)');
// sql.Add(',SSCNYAmount=((Case when ISNULL(A.RegType,'''')=''收款'' then -1*Amount else Amount end) ');
// sql.Add('-ISNULL(A.SXFAmount,0))*ISNULL((Case when Currency=''CNY'' then 1 else A.JHExchangeRate end),1)');
sql.Add(',AAA = ISNULL((select CWBSY from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('BBB = ISNULL((select CRMBSSJE from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('CCC = ISNULL((select CTSSY from Costing_Table where COrderNo = A.OrderNo), 0)');
SQL.Add(',BuyConNO=ISNULL(A.BuyConNo,(select TOP 1 BuyConNo from Trade_Plan_Sub X where X.MainID=A.OrdMainId ))');
SQL.Add(',A.*,Saleser=(select Top 1 Saleser from BS_Company X where X.CoAbbrName=A.OppCoName)');
sql.Add(' from Finance_Flow A where A.OrderNo= ' + QuotedStr(Trim(FOrderNo)));
sql.Add(' and FFFlag = ''应收收'' ');
// sql.Add(' and ISNULL(A.FFTime,A.SQDate)<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' ');
//ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQueryMain, CDS_HZ);
SInitCDSData(ADOQueryMain, CDS_HZ);
finally
ADOQueryMain.EnableControls;
TV4.DataController.Filter.Clear;
end;
// ToolButton2.Click;
end;
procedure TfrmPlanProfitDetails.InitYFFGrid();
begin
try
ADOQuery5.DisableControls;
with ADOQuery5 do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add('Select Amount=(Case when ISNULL(A.RegType,'''')=''付款'' then -1*Amount else Amount end)');
// sql.Add(',SSAmount=(Case when ISNULL(A.RegType,'''')=''收款'' then -1*Amount else Amount end)-ISNULL(A.SXFAmount,0)');
// sql.Add(',SSCNYAmount=((Case when ISNULL(A.RegType,'''')=''收款'' then -1*Amount else Amount end) ');
// sql.Add('-ISNULL(A.SXFAmount,0))*ISNULL((Case when Currency=''CNY'' then 1 else A.JHExchangeRate end),1)');
sql.Add(',DDD = ISNULL((select GDS from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('EEE = ISNULL((select COrderSF from Costing_Table where COrderNo = A.OrderNo), 0),');
SQL.Add('BuyConNO=ISNULL(A.BuyConNo,(select TOP 1 BuyConNo from Trade_Plan_Sub X where X.MainID=A.OrdMainId ))');
SQL.Add(',A.*,Saleser=(select Top 1 Saleser from BS_Company X where X.CoAbbrName=A.OppCoName)');
sql.Add(' from Finance_Flow A where A.OrderNo= ' + QuotedStr(Trim(FOrderNo)));
sql.Add(' and FFFlag = ''应付付'' ');
// sql.Add(' and ISNULL(A.FFTime,A.SQDate)>=''' + FormatDateTime('yyyy-MM-dd', begdate.DateTime) + ''' ');
// sql.Add(' and ISNULL(A.FFTime,A.SQDate)<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' ');
//ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery5, ClientDataSet1);
SInitCDSData(ADOQuery5, ClientDataSet1);
finally
ADOQuery5.EnableControls;
TV1.DataController.Filter.Clear;
end;
// ToolButton2.Click;
end;
procedure TfrmPlanProfitDetails.InitZD();
begin
with ADOQuery2 do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add('select A.OrderNo,C.OrderNo TOOrdNO,A.C_Pattern,A.C_Color,A.C_ColorNo,ISNULL(A.ZDPrice,0) ZDPrice');
if FUnit = 'M' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkMeter))')
end
else if FUnit = 'Y' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkYardage))')
end
else if FUnit = 'Kg' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkGrossWeight))')
end;
SQL.Add(',COUNT(CIID) Piece,SUM(StkGrossWeight) GrossWeight');
sql.Add(',SUM(StkNetWeight) NetWeight,SUM(StkMeter) Meter,SUM(StkYardage) Yardage');
SQL.Add('from Trade_Cloth_Stock_ZD A left join Trade_Plan_Sub B on A.ZDSubId=B.SubID');
sql.Add('left join Trade_Plan_Main C on C.MainId=B.MainId');
sql.Add(' where A.MainID= ' + QuotedStr(Trim(FMainID)));
Sql.Add('GROUP BY A.OrderNo,C.OrderNo,A.C_Pattern,A.C_Color,A.C_ColorNo,A.ZDPrice');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery2, CDS_2);
SInitCDSData(ADOQuery2, CDS_2);
with ADOQuery3 do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add('select A.OrderNo FromOrdNo,C.OrderNo,B.C_Pattern,B.C_Color,B.C_ColorNo,COUNT(CIID) Piece,ISNULL(A.ZDPrice,0) ZDPrice');
if FUnit = 'M' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkMeter))')
end
else if FUnit = 'Y' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkYardage))')
end
else if FUnit = 'Kg' then
begin
sql.Add(',ZDAmount=(ISNULL(A.ZDPrice,0)*SUM(StkGrossWeight))')
end;
SQL.Add(',SUM(StkGrossWeight) GrossWeight,SUM(StkNetWeight) NetWeight,SUM(StkMeter) Meter,SUM(StkYardage) Yardage');
SQL.Add('from Trade_Cloth_Stock_ZD A left join Trade_Plan_Sub B on A.ZDSubId=B.SubID');
sql.Add('left join Trade_Plan_Main C on C.MainId=B.MainId where A.ZDMainID= ' + QuotedStr(Trim(FMainID)));
Sql.Add('GROUP BY A.OrderNO,C.OrderNo,B.C_Pattern,B.C_Color,B.C_ColorNo,A.ZDPrice');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery3, CDS_3);
SInitCDSData(ADOQuery3, CDS_3);
// ToolButton2.Click;
end;
procedure TfrmPlanProfitDetails.N1Click(Sender: TObject);
begin
Clipboard.SetTextBuf(PChar(Trim(CDS_HZ.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;
procedure TfrmPlanProfitDetails.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmPlanProfitDetails.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmPlanProfitDetails.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(trim(self.Caption), Tv1, '利润明细');
// Enddate.DateTime := SGetServerDate(ADOQueryTemp);
//// begdate.DateTime := StartOfTheMonth(Enddate.DateTime);
// begdate.DateTime := EndDate.DateTime - 365;
InitGrid();
InitYFFGrid();
InItZD();
end;
procedure TfrmPlanProfitDetails.TBRafreshClick(Sender: TObject);
begin
InitGrid();
InitYFFGrid();
InitZD();
end;
procedure TfrmPlanProfitDetails.ToolButton1Click(Sender: TObject);
begin
WriteCxGrid(trim(self.Caption), Tv1, '利润明细');
end;
procedure TfrmPlanProfitDetails.ToolButton2Click(Sender: TObject);
var
fsj: string;
begin
if ADOQueryMain.Active = False then
Exit;
SDofilter(ADOQueryMain, Trim(SGetFilters(Panel1, 1, 2)));
SCreateCDS(ADOQueryMain, CDS_HZ);
SInitCDSData(ADOQueryMain, CDS_HZ);
end;
procedure TfrmPlanProfitDetails.OrderNoChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmPlanProfitDetails.ToolButton4Click(Sender: TObject);
var
filepath: string;
mBegdate, mEnddate: string;
begin
mBegdate := FormatDateTime('yyyy-MM-dd', begdate.Date);
mEnddate := FormatDateTime('yyyy-MM-dd', enddate.Date);
if CDS_HZ.IsEmpty then
exit;
with ADOQueryPrint do
begin
Close;
SQL.Clear;
with ADOQueryPrint do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add(' exec P_YSSK_List @begdate=' + quotedstr(Trim(FormatDateTime('yyyy-MM-dd', begdate.DateTime))) + ',@Enddate=' + quotedstr(Trim(FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1))) + ',@flag=''已审核''');
Open;
end;
Open;
end;
try
filepath := ExtractFilePath(Application.ExeName) + 'report\应收账款.rmf';
if not FileExists(Pchar(filepath)) then
begin
application.MessageBox(pchar('文件[' + filepath + ']不存在!'), '提示信息', MB_IConError);
exit;
end;
RmVariables['begDate'] := FormatDateTime('yyyy-mm-dd', begDate.Date);
RmVariables['enddate'] := FormatDateTime('yyyy-mm-dd', enddate.Date);
RMVariables['ZDR'] := trim(DName);
RM1.LoadFromFile(filepath);
RM1.ShowReport;
finally
end;
end;
procedure TfrmPlanProfitDetails.cxTabControl1Change(Sender: TObject);
begin
InitGrid();
InitYFFGrid();
end;
end.