unit U_DHXSListSel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls, ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient, cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC, cxLookAndFeels, cxLookAndFeelPainters, dxBarBuiltInMenu, cxNavigator, cxSplitter; type TfrmDHXSListSel = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBClose: TToolButton; Panel1: TPanel; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ToolButton1: TToolButton; cxTabControl1: TcxTabControl; cxGridPopupMenu1: TcxGridPopupMenu; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column8: TcxGridDBColumn; v1CustomerNoName: TcxGridDBColumn; v1OrdPerson1: TcxGridDBColumn; v1OrdDate: TcxGridDBColumn; v1Column23: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; v1Column11: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column17: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column19: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; v1Column7: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Label2: TLabel; Label10: TLabel; Label5: TLabel; Label8: TLabel; Label14: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; FSID: TEdit; ConNo: TEdit; CRType: TComboBox; CustomerNoName: TEdit; CheckBox1: TCheckBox; cxSplitter1: TcxSplitter; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cv2Column10: TcxGridDBColumn; cv2Column4: TcxGridDBColumn; cv2Column7: TcxGridDBColumn; cv2Column5: TcxGridDBColumn; cv2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; Tv2Column5: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; Tv2Column3: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; CDS_SUB: TClientDataSet; DataSource2: TDataSource; Tv2Column4: TcxGridDBColumn; Tv2Column6: TcxGridDBColumn; Tv2Column7: TcxGridDBColumn; Tv2Column8: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ConNoMChange(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure SPIDKeyPress(Sender: TObject; var Key: Char); procedure SPSpecChange(Sender: TObject); procedure ToFactoryNameChange(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton1Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure FSIDChange(Sender: TObject); private canshu1, canshu2: string; procedure InitGrid(); procedure INITSUB(); function YFData(): Boolean; { Private declarations } public FCKName: string; { Public declarations } end; var frmDHXSListSel: TfrmDHXSListSel; implementation uses U_DataLink, U_Fun; {$R *.dfm} function TfrmDHXSListSel.YFData(): Boolean; var CRID, OrdMainId, YFID, FComTaiTou, FCRID, FFactoryName: string; begin Result := False; with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryName=' + quotedstr(Trim(CDS_Main.fieldbyname('factoryName').AsString))); Open; end; if ADOQueryTemp.IsEmpty = False then begin CRID := ADOQueryTemp.fieldbyname('CRID').AsString; end else begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CRID set CRID=CRID+1'); sql.Add('select * from YF_Money_CRID '); Open; end; CRID := ADOQueryCmd.fieldbyname('CRID').AsString; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value := StrToInt(CRID); FieldByName('FactoryName').Value := Trim(CDS_Main.fieldbyname('factoryName').AsString); FieldByName('ZdyStr1').Value := '应付付'; Post; end; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where FactoryName=' + quotedstr(Trim(CDS_Main.fieldbyname('factoryName').AsString))); sql.Add(' and mainID=''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + ''''); // sql.Add(' and subID='''+Trim(Order_Sub.fieldbyname('subID').AsString)+''''); Open; end; if ADOQueryTemp.IsEmpty then begin if GetLSNo(ADOQueryCmd, YFID, 'YF', 'YF_Money_CR', 3, 1) = False then begin Application.MessageBox('取坯布应付最大号失败!', '提示', 0); Exit; end; end else begin YFID := Trim(ADOQueryTemp.fieldbyname('YFID').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where YFID=''' + Trim(YFID) + ''''); Open; end; with ADOQueryCmd do begin if ADOQueryTemp.IsEmpty then Append else Edit; FieldByName('YFID').Value := Trim(YFID); FieldByName('YFTypeId').Value := Trim(CDS_Main.fieldbyname('SPID').AsString); FieldByName('CRID').Value := StrToInt(CRID); FieldByName('Filler').Value := Trim(DName); FieldByName('CRType').Value := '应付款登记'; FieldByName('CRFlag').Value := '应付付'; FieldByName('QtyFlag').Value := 1; FieldByName('FactoryName').Value := Trim(CDS_Main.fieldbyname('factoryName').AsString); FieldByName('CRTime').Value := CDS_Main.fieldbyname('CRTime').AsDateTime; if Trim(CDS_Main.fieldbyname('CRType').AsString) = '退货出库' then begin FieldByName('Qty').Value := -CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('PS').Value := -CDS_Main.fieldbyname('PiQty').AsFloat; end else begin FieldByName('Qty').Value := CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('PS').Value := CDS_Main.fieldbyname('PiQty').AsFloat; end; FieldByName('YFType').Value := '自动生成'; FieldByName('Price').Value := CDS_Main.fieldbyname('Price').AsFloat; FieldByName('OtherFee').Value := CDS_Main.fieldbyname('CostPrice').AsFloat; FieldByName('money').Value := CDS_Main.fieldbyname('Price').AsFloat * CDS_Main.fieldbyname('Qty').AsFloat + CDS_Main.fieldbyname('CostPrice').AsFloat; FieldByName('BBmoney').Value := CDS_Main.fieldbyname('Price').AsFloat * CDS_Main.fieldbyname('Qty').AsFloat + CDS_Main.fieldbyname('CostPrice').AsFloat; FieldByName('HuiLv').Value := 1; FieldByName('BZType').Value := 'RMB'; FieldByName('ComTaiTou').Value := ''; FieldByName('QtyUnit').Value := Trim(CDS_Main.fieldbyname('QtyUnit').AsString); FieldByName('orderNo').Value := Trim(CDS_Main.fieldbyname('OrderNo').AsString); FieldByName('P_CodeName').Value := Trim(CDS_Main.fieldbyname('SPName').AsString); // FieldByName('P_Color').Value:=Trim(CDS_Main.fieldbyname('QtyUnit').AsString); if Trim(CDS_Main.fieldbyname('CRType').AsString) = '采购入库' then begin FieldByName('YFName').Value := '坯布费' end else if Trim(CDS_Main.fieldbyname('CRType').AsString) = '成品采购' then begin FieldByName('YFName').Value := '成品采购费'; end else if Trim(CDS_Main.fieldbyname('CRType').AsString) = '回修完成' then begin FieldByName('YFName').Value := '回修费'; end else if Trim(CDS_Main.fieldbyname('CRType').AsString) = '退货出库' then begin FieldByName('YFName').Value := '坯布退货'; end else begin FieldByName('YFName').Value := '加工费'; end; FieldByName('MainId').Value := Trim(CDS_Main.fieldbyname('SPID').AsString); // FieldByName('subId').Value:=Trim(Order_Sub.fieldbyname('subId').AsString); FieldByName('status').Value := '0'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(' where CRID=' + CRID); ExecSQL; end; Result := True; end; procedure TfrmDHXSListSel.FormDestroy(Sender: TObject); begin frmDHXSListSel := nil; end; procedure TfrmDHXSListSel.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmDHXSListSel.FormCreate(Sender: TObject); begin //cxGrid1.Align:=alClient; EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 30; canshu1 := Trim(DParameters1); canshu2 := Trim(DParameters2); end; procedure TfrmDHXSListSel.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.*,DYCS1=ISNULL(DYCS,0) '); SQL.Add(',HRNAME=ISNULL((SELECT TOP 1 ISNULL(COHRNAME,CONAME) FROM COMPANY B WHERE A.CustomerNoName=B.CONAME AND VALID=''Y'' and cotype=''客户''),CustomerNoName)'); sql.Add(' from FHSQ_Main A where 1=1 '); if CheckBox1.Checked then begin sql.Add(' and A.FHDate>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and A.FHDate<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); end; SQL.Add(' and isnull(A.status,''未完成'')<>''未完成'' and isnull(A.status,''未完成'')<>''已取消'' '); // SQL.Add(' and isnull(A.Chker,'''')<>'''' '); // sql.Add(' and FHPSHZ>0'); if CRType.Text = '其它出库' then begin SQL.Add('AND CRTYPE<>''销售出库'' AND CRTYPE<>''供应商退货'''); end else if CRType.Text = '销售出库' then begin SQL.Add('AND CRTYPE=''销售出库'''); end; if cxTabControl1.TabIndex = 0 then SQL.Add(' and not exists(select YFPZNO from CW_FY_MX X where X.YFPZNO=A.FSID ) ') else SQL.Add(' and exists(select YFPZNO from CW_FY_MX X where X.YFPZNO=A.FSID )'); SQL.Add('ORDER BY FHDATE DESC'); // ShowMessage(SQL.Text); Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmDHXSListSel.INITSUB(); begin try ADOQueryCmd.DisableControls; with ADOQueryCmd do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.SPrtCodeName,A.KUANHAO,A.SEASON,A.prtcolor,A.ganghao,SUM(SQPS)SQPS,SUM(sqqty)sqqty,SUM(FHPS)FHPS,SUM(FHQty)FHQty,SUM(FHMS)FHMS,SUM(BGFEE)BGFEE,A.PRICE,SUM(ADDM)ADDM '); Sql.Add(',MONEY=SUM([dbo].[F_YS_Get_Qty](ORDERUNIT,A.FHMS-ISNULL(ADDM,0),A.FHQty)*A.PRICE+isnull(a.bgfee,0) ) '); Sql.Add(', ORDERUNIT'); SQL.Add(' from FHSQ_SUB A '); // inner join FHSQ_Main B on A.FSID=B.FSID SQL.Add(' WHERE A.FSID=' + QuotedStr(Trim(CDS_Main.fieldbyname('FSID').AsString))); sql.Add(' GROUP BY A.SPrtCodeName,A.prtcolor,A.ganghao,A.PRICE,A.ORDERUNIT,A.KUANHAO,A.SEASON '); Open; // ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryCmd, CDS_SUB); SInitCDSData20(ADOQueryCmd, CDS_SUB); finally ADOQueryCmd.EnableControls; end; end; procedure TfrmDHXSListSel.TBRafreshClick(Sender: TObject); begin BegDate.SetFocus; InitGrid(); end; procedure TfrmDHXSListSel.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); end; end; procedure TfrmDHXSListSel.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption, Tv1, '财务发货选择3'); WriteCxGrid(self.Caption, Tv2, '财务发货选择2'); Close; end; procedure TfrmDHXSListSel.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption, Tv1, '财务发货选择3'); ReadCxGrid(self.Caption, Tv2, '财务发货选择2'); end; procedure TfrmDHXSListSel.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); end; end; procedure TfrmDHXSListSel.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmDHXSListSel.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmDHXSListSel.SPIDKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin {if Length(Trim(SPID.Text))<4 then Exit; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.* '); sql.Add(',ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId)'); //sql.Add(' ,ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId )'); sql.Add(' from CK_SXPB_CR A'); sql.add(' where SPID like :SXID'); Parameters.ParamByName('SXID').Value:='%'+Trim(SXID.Text)+'%'; Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally ADOQueryMain.EnableControls; end; } end; end; procedure TfrmDHXSListSel.SPSpecChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmDHXSListSel.ToFactoryNameChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmDHXSListSel.cxTabControl1Change(Sender: TObject); begin INITGrid(); end; procedure TfrmDHXSListSel.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbright then end; procedure TfrmDHXSListSel.ToolButton1Click(Sender: TObject); begin if cxTabControl1.TabIndex <> 0 then exit; ModalResult := 1; end; procedure TfrmDHXSListSel.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin INITSUB(); end; procedure TfrmDHXSListSel.FSIDChange(Sender: TObject); begin TBFind.Click(); end; end.