unit U_CWYFFPHXList; 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, cxPC, cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, U_BaseList, Vcl.Menus, RM_e_Xls, Clipbrd; type TfrmCWYFFPHXList = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ADOQueryMain: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; FactoryName: TEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v2CRTime: TcxGridDBColumn; v2Qty: TcxGridDBColumn; v2QtyUnit: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; begdate: TDateTimePicker; Enddate: TDateTimePicker; GPM_1: TcxGridPopupMenu; DS_1: TDataSource; CDS_1: TClientDataSet; v2Column1: TcxGridDBColumn; VYB: TcxGridDBColumn; v2FactoryName: TcxGridDBColumn; v2Note: TcxGridDBColumn; v2P_CodeName: TcxGridDBColumn; v2ps: TcxGridDBColumn; v2P_Color: TcxGridDBColumn; P_CodeName: TEdit; Label4: TLabel; Button1: TButton; Label8: TLabel; P_Color: TEdit; v2P_Code: TcxGridDBColumn; CheckBox1: TCheckBox; Label9: TLabel; BatchNo: TEdit; Label6: TLabel; P_Code: TEdit; v2OrderNo: TcxGridDBColumn; v2Column14: TcxGridDBColumn; v2P_HX: TcxGridDBColumn; Label1: TLabel; P_HX: TEdit; cxTabControl1: TcxTabControl; Label11: TLabel; OrderNo: TEdit; v2BZType: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2P_Spec: TcxGridDBColumn; v2BatchNo: TcxGridDBColumn; v2Column3: TcxGridDBColumn; VC_chkstatus: TcxGridDBColumn; v2Column4: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; VC_SSel: TcxGridDBColumn; PopupMenu1: TPopupMenu; Tv1Column5: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; ToolButton1: TToolButton; Tv1Column7: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; ToolButton3: TToolButton; RMDB_Grid: TRMDBDataSet; RMGrid: TRMGridReport; ADOQueryPrint: TADOQuery; ToolButton4: TToolButton; RMXLSExport1: TRMXLSExport; N2: TMenuItem; Label2: TLabel; FromDataID1: TEdit; Tv1Column10: TcxGridDBColumn; ToolButton5: TToolButton; Tv1Column11: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Tv1Column14: TcxGridDBColumn; Tv1Column15: TcxGridDBColumn; CheckBox2: TCheckBox; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn34: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; DS_2: TDataSource; CDS_2: TClientDataSet; GPM_2: TcxGridPopupMenu; PopupMenu2: TPopupMenu; MenuItem1: TMenuItem; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; cxSplitter1: TcxSplitter; Tv1Column6: TcxGridDBColumn; TV2Column3: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject); procedure cxGridDBColumn6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure cxTabControl1Change(Sender: TObject); procedure FactoryNameKeyPress(Sender: TObject; var Key: Char); procedure v2Column3PropertiesEditValueChanged(Sender: TObject); procedure Tv1Column3PropertiesEditValueChanged(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ButtonEdit(Sender: TObject; AButtonIndex: Integer); procedure ToolButton3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure MenuItem1Click(Sender: TObject); procedure TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure Tv1Column6PropertiesEditValueChanged(Sender: TObject); private { Private declarations } procedure InitGrid(); procedure InitHZ(); public fFlag: integer; { Public declarations } RKFlag, FCYID, fmanage, FZKType, canshu1: string; end; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_GYSSel; {$R *.dfm} procedure TfrmCWYFFPHXList.InitHZ(); begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select A.FactoryNo,A.FactoryName,A.ComTaiTou,B.FactType,wFPhxNum=sum(A.Money-ISNULL(A.FPhxNum, 0)) '); sql.Add(',WZPMoney=sum(case when isnull(A.ZPID,'''')='''' then A.Money else 0 end) '); sql.Add(' from CW_Money_CR A'); sql.Add(' inner join Company B on A.FactoryNo=B.COCODE where B.Valid=''Y'' and B.FactType in (''ºó¼Ó¹¤³§'',''Å÷²¼³§'',''Ⱦ³§'') '); sql.Add('and A.CRType=''Ó¦¸¶¿îµÇ¼Ç'' and A.Status=''1'' '); sql.Add('group by A.FactoryNo,A.FactoryName,A.ComTaiTou,B.FactType'); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmCWYFFPHXList.MenuItem1Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_2.fieldbyname(TV2.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmCWYFFPHXList.InitGrid(); var WSql: string; begin WSql := SGetFilters(Panel1, 1, 2); if Trim(WSql) <> '' then WSql := ' and ' + WSql; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; Filtered := False; sql.Add(' select A.* '); sql.Add(' ,FactType=(select FactType from Company X where X.CoCode=A.FactoryNo and X.Valid=''Y'' )'); sql.Add(' from V_CW_YFHXJD A '); case cxTabControl1.TabIndex of 0: begin sql.Add(' where isnull(BZType,'''')=''$'' '); end; 1: begin sql.Add(' where isnull(BZType,'''')=''£¤'' '); end; 2: begin sql.Add(' where isnull(BZType,'''')=''€'' '); end; end; if CheckBox2.Checked then begin sql.Add(' and isnull(FPhxNum,0)=0 '); end else begin if CheckBox1.Checked then begin sql.Add(' and A.CRTime>=''' + FormatDateTime('yyyy-MM-dd', begdate.DateTime) + ''' '); sql.Add(' and CRTime<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' '); end; end; sql.Add(WSql); // ShowMessage(sql.Text); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmCWYFFPHXList.N2Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmCWYFFPHXList.FactoryNameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmCWYFFPHXList.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmCWYFFPHXList.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption + 'TV1', TV1, '²ÆÎñ¹ÜÀí'); WriteCxGrid(self.Caption + 'TV2', TV2, '²ÆÎñ¹ÜÀí'); Close; end; procedure TfrmCWYFFPHXList.FormShow(Sender: TObject); begin inherited; ReadCxGrid(self.Caption + 'TV1', TV1, '²ÆÎñ¹ÜÀí'); ReadCxGrid(self.Caption + 'TV2', TV2, '²ÆÎñ¹ÜÀí'); Enddate.DateTime := SGetServerDate(ADOQueryTemp); begdate.DateTime := Enddate.DateTime; InitHZ(); InitGrid(); end; procedure TfrmCWYFFPHXList.TBRafreshClick(Sender: TObject); begin begdate.SetFocus; InitGrid(); InitHZ(); end; procedure TfrmCWYFFPHXList.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmCWYFFPHXList.ToolButton3Click(Sender: TObject); var filepath, maxId, FCWIDS: string; mBegdate, mEnddate: string; begin if GetLSNo(ADOQueryCmd, maxId, 'PJ', 'CW_Money_CR', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('È¡×î´óºÅʧ°Ü£¡', 'Ìáʾ', 0); Exit; end; FCWIDS := ''; with CDS_1 do begin DisableControls; First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin if FCWIDS = '' then FCWIDS := QuotedStr(Trim(CDS_1.fieldbyname('CWID').AsString)) else FCWIDS := FCWIDS + ',' + QuotedStr(Trim(CDS_1.fieldbyname('CWID').AsString)); Edit; FieldByName('ZPID').Value := maxId; Post; end; Next; end; EnableControls; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('UPDATE CW_Money_CR set ZPID=' + QuotedStr(maxId)); sql.Add('where isnull(ZPID,'''')='''' and CWID in (' + FCWIDS + ') '); ExecSQL; end; end; procedure TfrmCWYFFPHXList.ToolButton4Click(Sender: TObject); var filepath, maxId, FCWIDS: string; mBegdate, mEnddate: string; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add('exec P_CW_Print_HBPJ @ZPID=' + QuotedStr(Trim(CDS_1.fieldbyname('ZPID').AsString))); Open; end; try ExportFtErpFile('ºÏ²¢Æ±¾Ý.rmf', ADOQueryTemp); 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 TfrmCWYFFPHXList.ToolButton5Click(Sender: TObject); var filepath, maxId, FCWIDS: string; mBegdate, mEnddate: string; begin FCWIDS := ''; with CDS_1 do begin DisableControls; First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin if FCWIDS = '' then FCWIDS := QuotedStr(Trim(CDS_1.fieldbyname('CWID').AsString)) else FCWIDS := FCWIDS + ',' + QuotedStr(Trim(CDS_1.fieldbyname('CWID').AsString)); Edit; FieldByName('ZPID').Value := ''; Post; end; Next; end; EnableControls; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('UPDATE CW_Money_CR set ZPID=null'); sql.Add('where CWID in (' + FCWIDS + ') '); // ShowMessage(sql.Text); ExecSQL; end; end; procedure TfrmCWYFFPHXList.CheckBox2Click(Sender: TObject); begin InitGrid(); end; procedure TfrmCWYFFPHXList.cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; FPS, FQty, FPrice, FQTFee, FMoney: Double; begin FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with CDS_1 do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; FPS := CDS_1.fieldbyname('PS').AsFloat; FQty := CDS_1.fieldbyname('Qty').AsFloat; FQTFee := CDS_1.fieldbyname('QTFee').AsFloat; FPrice := CDS_1.fieldbyname('Price').AsFloat; FMoney := CDS_1.fieldbyname('Money').AsFloat; end; if Trim(FFieldName) <> 'Money' then begin FMoney := FQty * FPrice + FQTFee; end; with CDS_1 do begin Edit; FieldByName('Money').Value := FMoney; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CW_Money_CR set ' + FFieldName + '=' + Trim(mvalue)); if Trim(FFieldName) <> 'Money' then sql.Add(' ,Money=' + FloatToStr(FMoney)); sql.Add('where CWID=' + quotedstr(Trim(CDS_1.fieldbyname('CWID').AsString))); ExecSQL; end; Tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmCWYFFPHXList.cxGridDBColumn6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'OrderUnit'; flagname := 'ÊýÁ¿µ¥Î»'; if ShowModal = 1 then begin Self.CDS_1.Edit; Self.CDS_1.FieldByName('QtyUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCWYFFPHXList.Tv1Column3PropertiesEditValueChanged(Sender: TObject); var mvalue: Boolean; FFieldName: string; begin mvalue := TcxCheckBox(Sender).Checked; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_1 do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; if mvalue then sql.Add('update CW_Money_CR set ' + FFieldName + '=1') else sql.Add('update CW_Money_CR set ' + FFieldName + '=0'); sql.Add('where CWID=' + quotedstr(Trim(CDS_1.fieldbyname('CWID').AsString))); ExecSQL; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmCWYFFPHXList.Tv1Column6PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_1 do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CW_Money_CR set ' + FFieldName + '=' + quotedstr(Trim(mvalue))); sql.Add('where CWID=' + quotedstr(Trim(CDS_1.fieldbyname('CWID').AsString))); ExecSQL; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmCWYFFPHXList.TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin FactoryName.Text := CDS_2.FieldByName('FactoryName').AsString; InitGrid(); end; procedure TfrmCWYFFPHXList.ButtonEdit(Sender: TObject; AButtonIndex: Integer); var FComTaiTou: string; begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'GSTTDZ'; flagname := '¹«Ë¾Ì§Í·'; if ShowModal = 1 then begin FComTaiTou := Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; with Self.CDS_1 do begin Edit; FieldByName('ComTaiTou').Value := Trim(FComTaiTou); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CW_Money_CR set ComTaiTou=' + quotedstr(Trim(FComTaiTou))); sql.Add('where CWID=' + quotedstr(Trim(CDS_1.fieldbyname('CWID').AsString))); ExecSQL; end; end; procedure TfrmCWYFFPHXList.v2Column3PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_1 do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CW_Money_CR set ' + FFieldName + '=' + quotedstr(Trim(mvalue))); sql.Add('where CWID=' + quotedstr(Trim(CDS_1.fieldbyname('CWID').AsString))); ExecSQL; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmCWYFFPHXList.cxTabControl1Change(Sender: TObject); begin InitGrid(); end; end.