unit U_DYSQList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, cxPC, cxButtonEdit, RM_E_llPDF, cxDropDownEdit, cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmDYSQList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; v1OrdDate: TcxGridDBColumn; Order_Main: TClientDataSet; RMDBDataSet1: TRMDBDataSet; RMXLSExport1: TRMXLSExport; v1CustomerNoName: TcxGridDBColumn; ToolButton1: TToolButton; ADOQueryPrint: TADOQuery; CDS_Print: TClientDataSet; v1Column4: TcxGridDBColumn; Panel1: TPanel; Label1: TLabel; Label4: TLabel; Label8: TLabel; Label9: TLabel; Label12: TLabel; Label13: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; CustomerNoName: TEdit; MPRTCodeName: TEdit; HZSCConNo: TEdit; MPRTKZ: TEdit; MPRTMF: TEdit; cxTabControl1: TcxTabControl; tchk: TToolButton; Tnochk: TToolButton; cxSplitter1: TcxSplitter; ADOQuerySub: TADOQuery; DataSource2: TDataSource; v1Column8: TcxGridDBColumn; Label2: TLabel; //RMllPDFExport1: TRMllPDFExport; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; ClientDataSet2: TClientDataSet; cxGridPopupMenu2: TcxGridPopupMenu; CDS_Note: TClientDataSet; RM1: TRMGridReport; v1Column13: TcxGridDBColumn; v1Column17: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column19: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column26: TcxGridDBColumn; v1Column27: TcxGridDBColumn; v1Column2: TcxGridDBColumn; cv2Column4: TcxGridDBColumn; cv2Column6: TcxGridDBColumn; cv1Column12: TcxGridDBColumn; cv2Column12: TcxGridDBColumn; cv1Column14: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column4: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; Label3: TLabel; FSID: TEdit; Label5: TLabel; HZCODE: TEdit; //RMllPDFExport1: TRMllPDFExport; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure CustomerNoNameChange(Sender: TObject); procedure tchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); private procedure InitGrid(); procedure InitSubGrid(); procedure InitForm(); procedure SetStatus(); function DelData(): Boolean; { Private declarations } public FFInt: Integer; canshu1, canshu2: string; { Public declarations } end; //var //frmContractListNX: TfrmContractListNX; implementation uses U_DataLink, U_DYSQInPut, U_Fun, U_ZDYHelp; {$R *.dfm} procedure TfrmDYSQList.SetStatus(); begin tchk.Visible := False; Tnochk.Visible := False; if canshu1 = '审核' then begin case cxTabControl1.TabIndex of 0: begin tchk.Visible := true; end; 1: begin Tnochk.Visible := true; end; 2: begin end; end; end else if canshu1 = '高权限' then begin case cxTabControl1.TabIndex of 0: begin tchk.Visible := true; end; 1: begin Tnochk.Visible := true; end; 2: begin end; end; end else begin end; end; procedure TfrmDYSQList.FormDestroy(Sender: TObject); begin //frmFHSQList:=nil; end; procedure TfrmDYSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmDYSQList.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; end; procedure TfrmDYSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('调样发货主表', Tv1, '发货管理7'); WriteCxGrid('调样发货子表', Tv2, '发货管理8'); end; procedure TfrmDYSQList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.*,isnull(status,''未完成'')status2 '); Sql.Add(' ,HZCODE=CAST((select distinct(SPrtCode) + '' '' from FHSQ_Sub X where A.FSID=X.FSID for xml path('''') ) AS VARCHAR(100))'); Sql.Add(' ,HZSCConNo= STUFF(( SELECT distinct '','' +convert(VARCHAR, SCConNo) FROM FHSQ_Sub X where A.FSID=X.FSID FOR XML PATH('''')), 1, 1, '''')'); sql.Add(' from FHSQ_Main A'); sql.Add(' where SQType=''调样'' '); if cxTabControl1.TabIndex <> 0 then begin sql.Add(' and SQDate>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and SQDate<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); end; if cxTabControl1.TabIndex = 0 then begin SQL.Add(' and isnull(A.Chker,'''')='''' '); end else if cxTabControl1.TabIndex = 1 then begin SQL.Add(' and isnull(A.Chker,'''')<>'''' '); end; if Trim(canshu1) <> '高权限' then begin sql.Add(' and isnull(A.Filler,'''')=''' + Trim(DName) + ''''); end; if (canshu2 = '内销') or (canshu2 = '外销') then begin sql.Add(' and isnull(A.XSType,'''')=''' + Trim(canshu2) + ''''); end; // ShowMessage(sql.Text); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmDYSQList.InitForm(); begin ReadCxGrid('调样发货主表', Tv1, '发货管理7'); ReadCxGrid('调样发货子表', Tv2, '发货管理8'); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 60; InitGrid(); end; procedure TfrmDYSQList.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); end; procedure TfrmDYSQList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if Trim(canshu1) <> '高权限' then begin if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from FHSQ_Main'); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if Trim(ADOQueryTemp.fieldbyname('YSID').AsString) <> '' then begin Application.MessageBox('已生成应收账款不能修改数据!', '提示', 0); Exit; end; try frmDYSQInPut := TfrmDYSQInPut.Create(Application); with frmDYSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FSID').AsString); if ShowModal = 1 then begin InitGrid(); end; end; finally frmDYSQInPut.Free; end; end; procedure TfrmDYSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if canshu1 <> '高权限' then begin if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select * from CK_BanCP_CR where CRFlag=''出库'''); sql.add(' and CKOrdNo=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); Open; end; if ADOQueryTemp.IsEmpty = False then begin Application.MessageBox('已发货不能删除数据!', '提示', 0); exit; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from yf_money_cr_sub'); sql.Add('where yfpzno=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if ADOQueryTemp.IsEmpty = false then begin Application.MessageBox('已生成应收账款不能删除!', '提示', 0); Exit; end; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if DelData() then begin Order_Main.Delete; InitSubGrid(); end; end; function TfrmDYSQList.DelData(): Boolean; begin try Result := false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete FHSQ_Sub where FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete FHSQ_Main where FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Result := True; except ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('数据删除异常!', '提示', 0); end; end; procedure TfrmDYSQList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; SelExportData(Tv1, ADOQueryMain, '发货申请列表'); end; procedure TfrmDYSQList.TBPrintClick(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if Order_Main.IsEmpty then Exit; ExportFtErpFile('调样申请单.rmf', ADOQueryTemp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\调样申请单.rmf'; with ADOQueryPrint do begin Close; sql.Clear; SQL.Add('select *,b.ganghao as gangno from fhsq_main A inner join fhsq_sub B ON A.FSID=B.FSID'); SQL.Add('WHERE A.FSID=' + quotedstr(Trim(Order_Main.fieldbyname('FSID').AsString))); // SQL.Add('EXEC P_Print_XHSQD @FSID=' + quotedstr(Trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if FileExists(fPrintFile) then begin try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(Order_Main.fieldbyname('FSID').AsString); fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp'; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3); except application.MessageBox('条形码生成失败!', '提示信息', MB_ICONERROR); exit; end; RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmDYSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); TBFind.Click; InitSubGrid(); end; procedure TfrmDYSQList.TBAddClick(Sender: TObject); var maxno: string; begin try frmDYSQInPut := TfrmDYSQInPut.Create(Application); with frmDYSQInPut do begin PState := 0; FMainId := ''; if ShowModal = 1 then begin InitGrid(); end; end; finally frmDYSQInPut.Free; end; end; procedure TfrmDYSQList.FormShow(Sender: TObject); begin InitForm(); SetStatus(); end; procedure TfrmDYSQList.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmDYSQList.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmDYSQList.ToolButton1Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmDYSQInPut := TfrmDYSQInPut.Create(Application); with frmDYSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FSID').AsString); ToolBar2.Visible := False; TBSave.Visible := False; ScrollBox1.Enabled := False; Tv1.OptionsSelection.CellSelect := False; if ShowModal = 1 then begin end; end; finally frmDYSQInPut.Free; end; end; procedure TfrmDYSQList.CustomerNoNameChange(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); end; procedure TfrmDYSQList.tchkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if cxTabControl1.TabIndex <> 0 then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update FHSQ_Main SET Chker=''' + Trim(DName) + ''',ChkTime=getdate(),ChkStatus=''审核通过'' '); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); execsql; end; Order_Main.Delete; InitSubGrid(); application.MessageBox('审核成功!', '提示信息'); except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmDYSQList.InitSubGrid(); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then sql.Add('select A.*,B.ORDERNO from FHSQ_Sub A LEFT JOIN JYOrder_Main B ON A.MainId=B.MainId where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + '''') else sql.Add('select A.*,B.ORDERNO from FHSQ_Sub A LEFT JOIN JYOrder_Main B ON A.MainId=B.MainId where 1=2'); // ShowMessage(SQL.Text); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmDYSQList.TnochkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if cxTabControl1.TabIndex <> 1 then exit; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from FHSQ_Main'); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if Trim(ADOQueryTemp.fieldbyname('YSID').AsString) <> '' then begin Application.MessageBox('已生成应收账款不能撤销!', '提示', 0); Exit; end; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update FHSQ_Main SET Chker=Null,ChkTime=Null,ChkStatus=Null '); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); execsql; end; Order_Main.Delete; InitSubGrid(); application.MessageBox('撤销成功!', '提示信息'); except application.MessageBox('撤销失败!', '提示信息', 0); end; end; procedure TfrmDYSQList.cxTabControl1Change(Sender: TObject); begin TBRafresh.Click; SetStatus(); end; procedure TfrmDYSQList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then begin sql.Add('select A.*, B.ORDERNO from FHSQ_Sub A LEFT JOIN JYOrder_Main B ON A.MainId=B.MainId '); // sql.Add(' inner join CLoth_Sub B on A.SubId=B.SubId'); // sql.Add(' inner join CLoth_Main C on B.MainId=C.MainId'); sql.Add(' where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); end else begin sql.Add('select A.*, B.ORDERNO from FHSQ_Sub A LEFT JOIN JYOrder_Main B ON A.MainId=B.MainId '); sql.Add(' where 1=2'); end; Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmDYSQList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if AViewInfo.GridRecord.Values[cv1Column12.Index] <> '未完成' then ACanvas.font.Color := clred; end; end.