D10myBiaoqi/A09财务通用管理/U_PlanProfitDetails.pas
2025-11-08 10:16:26 +08:00

775 lines
30 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;
CDS_31: TClientDataSet;
CDS_21: TClientDataSet;
TV2Column8: TcxGridDBColumn;
TV3Column4: TcxGridDBColumn;
TV2Column9: TcxGridDBColumn;
TV3Column5: TcxGridDBColumn;
TV2Column10: TcxGridDBColumn;
TV3Column6: TcxGridDBColumn;
TV2Column11: TcxGridDBColumn;
TV3Column7: TcxGridDBColumn;
CDS_32: TClientDataSet;
CDS_22: TClientDataSet;
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);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
procedure InitGrid();
procedure InitYFFGrid();
procedure InitZD();
public
fmanage, FZKType, FOrderNo, FMainID, FOrderNo2: string;
{ Public declarations }
RKFlag, FCYID, FUnit, FStkName: 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(',WBSJRMB = ISNULL((select sum(cast(CWBSY as decimal(18,2))) from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('RMBSHJE = ISNULL((select sum(cast(CRMBSSJE as decimal(18,2))) from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('TSSJ = ISNULL((select sum(cast(CTSSY as decimal(18,2))) 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 FFType = ''应收款登记'' ');
// 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);
if not CDS_HZ.IsEmpty then
begin
with CDS_HZ do
begin
for var i := 0 to 2 do
begin
append;
if i = 0 then
begin
CDS_HZ.FieldByName('FFAbstract').Value := '外币收益RMB';
CDS_HZ.FieldByName('Amount').Value := ADOQueryMain.FieldByName('WBSJRMB').Value;
end
else if i = 1 then
begin
CDS_HZ.FieldByName('FFAbstract').Value := '人民币实收金额';
CDS_HZ.FieldByName('Amount').Value := ADOQueryMain.FieldByName('RMBSHJE').Value;
end
else if i = 2 then
begin
CDS_HZ.FieldByName('FFAbstract').Value := '退税收益';
CDS_HZ.FieldByName('Amount').Value := ADOQueryMain.FieldByName('TSSJ').Value;
end;
post;
end;
end;
end;
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(',GDSs = ISNULL((select sum(cast(GDS as decimal(18, 2))) from Costing_Table where COrderNo = A.OrderNo), 0),');
sql.Add('QTSF = ISNULL((select sum(cast(COrderSF as decimal(18, 2))) 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 (FFType = ''应付款登记'' or FFType = ''其他应付款登记'' or FFType = ''手工费用登记'' ) ');
// 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);
if not ClientDataSet1.IsEmpty then
begin
with ClientDataSet1 do
begin
for var i := 0 to 1 do
begin
append;
if i = 0 then
begin
FieldByName('FFAbstract').Value := '国地税';
FieldByName('Amount').Value := ADOQuery5.FieldByName('GDSs').Value;
end
else if i = 1 then
begin
FieldByName('FFAbstract').Value := '其他税费';
FieldByName('Amount').Value := ADOQuery5.FieldByName('QTSF').Value;
end;
post;
end;
end;
end;
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, U.QtyUnit OrdUnit, A.ZDTime ');
// 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(StkNetWeight))')
// end;
SQL.Add(' ,ZDAmount = ISNULL(SUM(ISNULL(A.ZDPrice,0) *');
SQL.Add(' CASE U.QtyUnit');
sql.Add(' WHEN ''M'' THEN A.StkMeter');
SQL.Add(' WHEN ''Y'' THEN A.StkYardage');
SQL.Add(' ELSE A.StkNetWeight');
sql.Add(' END), 0) ');
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(' OUTER APPLY (SELECT TOP 1 QtyUnit ');
sql.Add(' FROM Trade_Cloth_DR_Sub X');
sql.add(' WHERE X.DRSID = A.DRSID) AS U');
sql.Add(' where A.MainID= ' + QuotedStr(Trim(FMainID)));
sql.Add(' and C.OrderNo <> '''' ');
Sql.Add('GROUP BY A.OrderNo,C.OrderNo,A.C_Pattern,A.C_Color,A.C_ColorNo,A.ZDPrice,U.QtyUnit, A.ZDTime');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery2, CDS_2);
SInitCDSData(ADOQuery2, CDS_2);
with CDS_2 do
begin
first;
while not eof do
begin
Edit;
FieldByName('SDefNote').AsString := '成品转单';
post;
Next;
end;
end;
with ADOQuery2 do
begin
Filtered := False;
Close;
SQL.Clear;
SQL.Add(' select FromOrdNo, stkName, C_Pattern, C_Color, C_ColorNo, sum(qty) as qty, price, sum(piece) as piece, qtyUnit, ZDAmount = (isnull(price, 0) * sum(qty)), qty = sum(qty), iotime, ');
SQL.Add(' (select OrderNo from Trade_Plan_Main where MainID in(select MainID from Pur_ClothPlan_Main X where X.PurNo = A.ToOrdNo)) ToOrdNo ');
SQL.Add(' from Bs_Cloth_IO A where STKName in (''贸易坯布'', ''贸易待检布'')');
SQL.Add(' and FromOrdNo <> (select OrderNo from Trade_Plan_Main where MainID in(select MainID from Pur_ClothPlan_Main X where X.PurNo = A.ToOrdNo)) ');
sql.Add(' and FromOrdNo = ' + quotedstr(FOrderNo));
SQL.Add(' group by FromOrdNo, ToOrdNo, C_Pattern, C_Color, C_ColorNo, Price, stkName, qtyUnit, iotime ');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery2, CDS_21);
SInitCDSData(ADOQuery2, CDS_21);
if not CDS_21.IsEmpty then
begin
CDS_21.First;
with CDS_2 do
begin
for var i := 0 to CDS_21.RecordCount - 1 do
begin
append;
FieldByName('OrderNo').AsString := CDS_21.FieldByName('FromOrdNo').AsString;
FieldByName('ToOrdNo').AsString := CDS_21.FieldByName('ToOrdNo').AsString;
FieldByName('C_Pattern').AsString := CDS_21.FieldByName('C_Pattern').AsString;
FieldByName('C_Color').AsString := CDS_21.FieldByName('C_Color').AsString;
FieldByName('ZDAmount').AsString := CDS_21.FieldByName('ZDAmount').AsString;
FieldByName('C_ColorNo').AsString := CDS_21.FieldByName('C_ColorNo').AsString;
FieldByName('ZDPrice').AsString := CDS_21.FieldByName('Price').AsString;
FieldByName('OrdUnit').AsString := CDS_21.FieldByName('qtyUnit').AsString;
FieldByName('Piece').AsString := CDS_21.FieldByName('Piece').AsString;
FieldByName('ZDTime').AsString := CDS_21.FieldByName('iotime').AsString;
if CDS_21.FieldByName('stkName').AsString = '贸易坯布' then
FieldByName('SDefNote').AsString := '坯布转单'
else if CDS_21.FieldByName('stkName').AsString = '贸易待检布' then
FieldByName('SDefNote').AsString := '待检布转单';
if LowerCase(CDS_21.FieldByName('QtyUnit').AsString) = 'kg' then
FieldByName('NetWeight').AsString := CDS_21.FieldByName('qty').AsString
else if LowerCase(CDS_21.FieldByName('QtyUnit').AsString) = 'm' then
FieldByName('Meter').AsString := CDS_21.FieldByName('qty').AsString;
CDS_21.Next;
end;
post;
end;
end;
with ADOQuery2 do
begin
Filtered := False;
Close;
SQL.Clear;
SQL.Add('SELECT ');
SQL.Add(' B.OrderNo AS FromOrdNo, B.C_Pattern, A.IOType, B.C_Color, B.C_ColorNo, ISNULL(A.price, sub.price) price, sub.QtyUnit, A.IOTime,COUNT(*) Piece, A.IOType,');
SQL.Add(' Sum(A.Meter) Meter, Sum(A.NetWeight) NetWeight, Sum(A.GrossWeight) GrossWeight, Sum(A.Yardage) Yardage,');
SQL.Add(' (SELECT top 1 OrderNo FROM Trade_Cloth_DR_Sub X WHERE X.DRMID = A.IONO) AS TOOrdNo,');
SQL.Add(' CAST(ISNULL(Sum(');
SQL.Add(' ISNULL(A.price, sub.price) * ');
SQL.Add(' ISNULL( CASE sub.QtyUnit');
SQL.Add(' WHEN ''M'' THEN A.Meter');
SQL.Add(' WHEN ''Kg'' THEN A.NetWeight ');
SQL.Add(' WHEN ''Y'' THEN A.Yardage');
SQL.Add(' END, 0)),0) AS DECIMAL(18,2)) AS zdamount');
SQL.Add('FROM Trade_Cloth_IO A ');
SQL.Add('JOIN Trade_Cloth_Stock B ON A.StkID = B.StkID ');
SQL.Add('CROSS APPLY (');
SQL.Add(' SELECT TOP 1 QtyUnit, price ');
SQL.Add(' FROM Trade_Cloth_DR_Sub X ');
SQL.Add(' WHERE X.DRMID = A.IONO');
SQL.Add(') sub');
SQL.Add('WHERE B.OrderNo <> (SELECT top 1 OrderNo FROM Trade_Cloth_DR_Sub X WHERE X.DRMID = A.IONO) ');
SQL.Add(' AND A.IOType IN (''加工出库'', ''回修出库'')');
SQL.Add(' AND B.OrderNo = ' + QuotedStr(FOrderNo));
SQL.Add('GROUP BY B.OrderNo, A.IONO, B.C_Pattern, A.IOType, B.C_Color, B.C_ColorNo, sub.price, sub.QtyUnit, A.IOTime, A.price');
Open;
end;
SCreateCDS(ADOQuery2, CDS_22);
SInitCDSData(ADOQuery2, CDS_22);
if not CDS_22.IsEmpty then
begin
CDS_22.First;
with CDS_2 do
begin
for var i := 0 to CDS_22.RecordCount - 1 do
begin
append;
FieldByName('OrderNo').AsString := CDS_22.FieldByName('FromOrdNo').AsString;
FieldByName('ToOrdNo').AsString := CDS_22.FieldByName('ToOrdNo').AsString;
FieldByName('C_Pattern').AsString := CDS_22.FieldByName('C_Pattern').AsString;
FieldByName('C_Color').AsString := CDS_22.FieldByName('C_Color').AsString;
FieldByName('ZDAmount').AsString := CDS_22.FieldByName('ZDAmount').AsString;
FieldByName('C_ColorNo').AsString := CDS_22.FieldByName('C_ColorNo').AsString;
FieldByName('ZDPrice').AsString := CDS_22.FieldByName('Price').AsString;
FieldByName('OrdUnit').AsString := CDS_22.FieldByName('qtyUnit').AsString;
FieldByName('Piece').AsString := CDS_22.FieldByName('Piece').AsString;
FieldByName('ZDTime').AsString := CDS_22.FieldByName('iotime').AsString;
FieldByName('Meter').AsString := CDS_22.FieldByName('Meter').AsString;
FieldByName('GrossWeight').AsString := CDS_22.FieldByName('GrossWeight').AsString;
FieldByName('Yardage').AsString := CDS_22.FieldByName('Yardage').AsString;
FieldByName('NetWeight').AsString := CDS_22.FieldByName('NetWeight').AsString;
if CDS_22.FieldByName('IOType').AsString = '加工出库' then
FieldByName('SDefNote').AsString := ' 加工转单'
else if CDS_22.FieldByName('IOType').AsString = '回修出库' then
FieldByName('SDefNote').AsString := ' 回修转单';
CDS_22.Next;
end;
post;
end;
end;
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, B.OrdUnit, A.ZDTime');
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(StkNetWeight))')
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, B.OrdUnit, A.ZDTime');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery3, CDS_3);
SInitCDSData(ADOQuery3, CDS_3);
with CDS_3 do
begin
first;
while not eof do
begin
Edit;
FieldByName('SDefNote').AsString := '成品转单';
post;
Next;
end;
end;
with ADOQuery3 do
begin
Filtered := False;
Close;
SQL.Clear;
SQL.Add('select stkName, FromOrdNo, C_Pattern, C_Color, C_ColorNo, Price, qtyUnit, ZDAmount = (isnull(price, 0) * sum(qty)), qty = sum(qty), sum(piece) as piece, iotime, ');
SQL.Add(' (select OrderNo from Trade_Plan_Main where MainID in(select MainID from Pur_ClothPlan_Main X where X.PurNo = A.ToOrdNo)) ToOrdNo ');
SQL.Add(' from Bs_Cloth_IO A where STKName in (''贸易坯布'', ''贸易待检布'')');
SQL.Add(' and FromOrdNo <> (select OrderNo from Trade_Plan_Main where MainID in(select MainID from Pur_ClothPlan_Main X where X.PurNo = A.ToOrdNo)) ');
sql.Add(' and (select OrderNo from Trade_Plan_Main where MainID in(select MainID from Pur_ClothPlan_Main X where X.PurNo = A.ToOrdNo)) = ' + quotedstr(FOrderNo));
SQL.Add(' group by FromOrdNo, ToOrdNo, C_Pattern, C_Color, C_ColorNo, Price, stkName, qtyUnit, iotime ');
// ShowMessage(sql.text);
Open;
end;
SCreateCDS(ADOQuery3, CDS_31);
SInitCDSData(ADOQuery3, CDS_31);
if not CDS_31.IsEmpty then
begin
with CDS_3 do
begin
CDS_31.First;
for var i := 0 to CDS_31.RecordCount - 1 do
begin
append;
FieldByName('OrderNo').AsString := OrderNo.Text;
FieldByName('FromOrdNo').AsString := CDS_31.FieldByName('FromOrdNo').AsString;
FieldByName('C_Pattern').AsString := CDS_31.FieldByName('C_Pattern').AsString;
FieldByName('C_Color').AsString := CDS_31.FieldByName('C_Color').AsString;
FieldByName('ZDAmount').AsString := CDS_31.FieldByName('ZDAmount').AsString;
FieldByName('C_ColorNo').AsString := CDS_31.FieldByName('C_ColorNo').AsString;
FieldByName('ZDPrice').AsString := CDS_31.FieldByName('Price').AsString;
FieldByName('OrdUnit').AsString := CDS_31.FieldByName('qtyUnit').AsString;
FieldByName('ZDTime').AsString := CDS_31.FieldByName('iotime').AsString;
FieldByName('Piece').AsString := CDS_31.FieldByName('Piece').AsString;
if CDS_31.FieldByName('stkName').AsString = '贸易坯布' then
FieldByName('SDefNote').AsString := '坯布转单'
else if CDS_31.FieldByName('stkName').AsString = '贸易待检布' then
FieldByName('SDefNote').AsString := '待检布转单';
if LowerCase(CDS_31.FieldByName('QtyUnit').AsString) = 'kg' then
FieldByName('NetWeight').AsString := CDS_31.FieldByName('qty').AsString
else if LowerCase(CDS_31.FieldByName('QtyUnit').AsString) = 'm' then
FieldByName('Meter').AsString := CDS_31.FieldByName('qty').AsString;
CDS_31.Next;
end;
post;
end;
end;
with ADOQuery3 do
begin
Filtered := False;
Close;
SQL.Clear;
SQL.Add('SELECT ');
SQL.Add(' B.OrderNo AS FromOrdNo, B.C_Pattern, A.IOType, B.C_Color, B.C_ColorNo, ISNULL(A.price, sub.price) price, sub.QtyUnit, A.IOTime,COUNT(*) Piece, A.IOType,');
SQL.Add(' Sum(A.Meter) Meter, Sum(A.NetWeight) NetWeight, Sum(A.GrossWeight) GrossWeight, Sum(A.Yardage) Yardage,');
SQL.Add(' (SELECT top 1 OrderNo FROM Trade_Cloth_DR_Sub X WHERE X.DRMID = A.IONO) AS ToOrdNo,');
SQL.Add(' CAST(ISNULL(Sum(');
SQL.Add(' ISNULL(A.price, sub.price) * ');
SQL.Add(' ISNULL( CASE sub.QtyUnit');
SQL.Add(' WHEN ''M'' THEN A.Meter');
SQL.Add(' WHEN ''Kg'' THEN A.NetWeight ');
SQL.Add(' WHEN ''Y'' THEN A.Yardage');
SQL.Add(' END, 0)),0) AS DECIMAL(18,2)) AS zdamount');
SQL.Add('FROM Trade_Cloth_IO A ');
SQL.Add('JOIN Trade_Cloth_Stock B ON A.StkID = B.StkID ');
SQL.Add('CROSS APPLY (');
SQL.Add(' SELECT TOP 1 QtyUnit, price ');
SQL.Add(' FROM Trade_Cloth_DR_Sub X ');
SQL.Add(' WHERE X.DRMID = A.IONO');
SQL.Add(') sub');
SQL.Add('WHERE B.OrderNo <> (SELECT top 1 OrderNo FROM Trade_Cloth_DR_Sub X WHERE X.DRMID = A.IONO) ');
SQL.Add(' AND A.IOType IN (''加工出库'', ''回修出库'')');
SQL.Add(' AND (SELECT top 1 OrderNo FROM Trade_Cloth_DR_Sub X WHERE X.DRMID = A.IONO) = ' + QuotedStr(FOrderNo));
SQL.Add('GROUP BY B.OrderNo, A.IONO, B.C_Pattern, A.IOType, B.C_Color, B.C_ColorNo, sub.price, sub.QtyUnit, A.IOTime, A.price');
Open;
end;
SCreateCDS(ADOQuery3, CDS_32);
SInitCDSData(ADOQuery3, CDS_32);
if not CDS_32.IsEmpty then
begin
with CDS_3 do
begin
CDS_32.First;
for var i := 0 to CDS_32.RecordCount - 1 do
begin
append;
FieldByName('OrderNo').AsString := OrderNo.Text;
FieldByName('FromOrdNo').AsString := CDS_32.FieldByName('FromOrdNo').AsString;
FieldByName('C_Pattern').AsString := CDS_32.FieldByName('C_Pattern').AsString;
FieldByName('C_Color').AsString := CDS_32.FieldByName('C_Color').AsString;
FieldByName('ZDAmount').AsString := CDS_32.FieldByName('ZDAmount').AsString;
FieldByName('C_ColorNo').AsString := CDS_32.FieldByName('C_ColorNo').AsString;
FieldByName('ZDPrice').AsString := CDS_32.FieldByName('Price').AsString;
FieldByName('OrdUnit').AsString := CDS_32.FieldByName('qtyUnit').AsString;
FieldByName('ZDTime').AsString := CDS_32.FieldByName('iotime').AsString;
FieldByName('Piece').AsString := CDS_32.FieldByName('Piece').AsString;
FieldByName('Meter').AsString := CDS_32.FieldByName('Meter').AsString;
FieldByName('GrossWeight').AsString := CDS_32.FieldByName('GrossWeight').AsString;
FieldByName('Yardage').AsString := CDS_32.FieldByName('Yardage').AsString;
FieldByName('NetWeight').AsString := CDS_32.FieldByName('NetWeight').AsString;
if CDS_32.FieldByName('IOType').AsString = '加工出库' then
FieldByName('SDefNote').AsString := ' 加工转单'
else if CDS_32.FieldByName('IOType').AsString = '回修出库' then
FieldByName('SDefNote').AsString := ' 回修转单';
CDS_32.Next;
end;
post;
end;
end;
// 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.FormResize(Sender: TObject);
begin
inherited;
cxGrid4.Width := ClientWidth div 2;
cxGrid2.Width := ClientWidth div 2;
end;
procedure TfrmPlanProfitDetails.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmPlanProfitDetails.FormShow(Sender: TObject);
begin
inherited;
// cxGrid4.Width := 981;
// CxSplitter2.Left := cxGrid4.Width;
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);
SDofilter(ADOQuery5, Trim(SGetFilters(Panel1, 1, 2)));
SCreateCDS(ADOQuery5, ClientDataSet1);
SInitCDSData(ADOQuery5, ClientDataSet1);
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.