unit U_FHSQList; 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, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; type TfrmFHSQList = 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; v1OrdDate: TcxGridDBColumn; v1OrdPerson1: TcxGridDBColumn; Order_Main: TClientDataSet; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; ToolButton1: TToolButton; ADOQueryPrint: TADOQuery; CDS_Print: TClientDataSet; v1Column4: TcxGridDBColumn; Panel1: TPanel; Label1: TLabel; Label4: TLabel; Label5: TLabel; Label8: TLabel; Label9: TLabel; Label12: TLabel; Label13: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; SHDanWei: TEdit; Salesman: TEdit; MPRTCodeName: TEdit; OrderNo: 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; v1Column5: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ClientDataSet2: TClientDataSet; cxGridPopupMenu2: TcxGridPopupMenu; CDS_Note: TClientDataSet; v2Column2: TcxGridDBColumn; RM1: TRMGridReport; v1Column11: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column17: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column19: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column21: TcxGridDBColumn; v1Column24: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column9: TcxGridDBColumn; v2Column10: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; CDSUser: TClientDataSet; IdHTTP1: TIdHTTP; //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 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 SHDanWeiChange(Sender: TObject); procedure tchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); private procedure InitGrid(); procedure InitSubGrid(); procedure InitForm(); function DelData(): Boolean; procedure SendMessage(Mfsid: string); { Private declarations } public FFInt: Integer; canshu1, FZZType: string; { Public declarations } end; //var //frmContractListNX: TfrmContractListNX; implementation uses U_DataLink, U_FHSQInPut, U_Fun, U_ZDYHelp; {$R *.dfm} procedure TfrmFHSQList.SendMessage(Mfsid: string); begin if FZZType = '纬编' then begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add(' select * from SY_User A where ISNULL(wxid,'''')<>'''''); SQL.Add(' and exists( select * from SY_Purview X where A.UserID=X.UserID and ModuleID=''09'' and ModuleSubID=''03'' ) '); Open; end; end else begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add(' select * from SY_User A where ISNULL(wxid,'''')<>'''''); SQL.Add(' and exists( select * from SY_Purview X where A.UserID=X.UserID and ModuleID=''09'' and ModuleSubID=''13'' ) '); Open; end; end; SCreateCDS20(ADOQueryTemp, CDSUser); SInitCDSData20(ADOQueryTemp, CDSUser); // if ADOQueryTmp.IsEmpty then // begin // Application.MessageBox('客户未绑定微信,提交失败!','提示信息',0); // Exit; // end; CDSUser.First; while not CDSUser.Eof do begin try with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('select * from WeixinMessage where 1<>1'); Open; Append; FieldByName('MessageType').Value := 'DeliverApplyToAudit'; FieldByName('MessageName').Value := '发货申请审核'; FieldByName('Title').Value := '您有新的发货申请需要审核'; FieldByName('URL').Value := 'pages/delivery-apply/view?id=' + Trim(Mfsid); FieldByName('OpenId').Value := Trim(CDSUser.FieldByName('wxid').AsString); FieldByName('Status').Value := '0'; FieldByName('CreateDate').Value := FormatDateTime('yyyymmdd', SGetServerDateTime(ADOQueryTemp)); FieldByName('CreateTime').Value := FormatDateTime('HH:mm:ss', SGetServerDateTime(ADOQueryTemp)); FieldByName('BusinessId').Value := Trim(Mfsid); FieldByName('KeyWord1').Value := Trim(Mfsid); FieldByName('KeyWord2').Value := '发货申请'; Post; end; GetHTTP(IdHTTP1, 'http://www.rightsoft.top/linghui/api/Message/Send/DeliverApplyToAudit'); except Application.MessageBox('推送失败', '提示', 0); Exit; end; CDSUser.Next; end; end; procedure TfrmFHSQList.FormDestroy(Sender: TObject); begin //frmFHSQList:=nil; end; procedure TfrmFHSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmFHSQList.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; canshu1 := DParameters1; end; procedure TfrmFHSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid(trim(self.Caption), Tv1, '发货申请管理'); WriteCxGrid(trim(self.Caption), Tv2, '发货申请管理'); end; procedure TfrmFHSQList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.* from FHSQ_Main A'); sql.Add(' where 1=1 '); if cxTabControl1.TabIndex <> 0 then begin sql.Add(' and filltime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and filltime<''' + 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; // showmessage(sql.text); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmFHSQList.InitForm(); begin ReadCxGrid(trim(self.Caption), Tv1, '发货申请管理'); ReadCxGrid(trim(self.Caption), Tv2, '发货申请管理'); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime; InitGrid(); end; procedure TfrmFHSQList.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 TfrmFHSQList.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 frmFHSQInPut := TfrmFHSQInPut.Create(Application); with frmFHSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FSID').AsString); FZZType := trim(self.FZZType); if ShowModal = 1 then begin end; end; finally frmFHSQInPut.Free; end; end; procedure TfrmFHSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from FHSQ_Sub where FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); sql.add(' and isnull(FHPS,0)>0'); Open; end; if ADOQueryTemp.IsEmpty = False then begin Application.MessageBox('已发货不能删除数据!', '提示', 0); exit; 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; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if DelData() then begin Order_Main.Delete; InitSubGrid(); end; end; function TfrmFHSQList.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 TfrmFHSQList.TBPrintClick(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 1 then Exit; with ADOQueryPrint do begin Close; sql.Clear; Sql.Add(' select A.*,B.* '); sql.Add(' from FHSQ_Main A inner join FHSQ_Sub B on A.FSId=B.FSId '); sql.Add(' where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); open; // showmessage(sql.text); end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\坯布发货申请单.rmf'; 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('没有找' + ExtractFilePath(Application.ExeName) + 'Report\坯布发货申请单.rmf'), '提示', 0); end; end; procedure TfrmFHSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); TBFind.Click; InitSubGrid(); end; procedure TfrmFHSQList.TBAddClick(Sender: TObject); var maxno: string; begin try frmFHSQInPut := TfrmFHSQInPut.Create(Application); with frmFHSQInPut do begin PState := 0; FMainId := ''; FZZType := trim(self.FZZType); if ShowModal = 1 then begin end; end; finally frmFHSQInPut.Free; end; InitGrid(); end; procedure TfrmFHSQList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmFHSQList.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmFHSQList.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmFHSQList.ToolButton1Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmFHSQInPut := TfrmFHSQInPut.Create(Application); with frmFHSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FSID').AsString); FZZType := trim(self.FZZType); ToolBar2.Visible := False; TBSave.Visible := False; ScrollBox1.Enabled := False; Tv1.OptionsSelection.CellSelect := False; if ShowModal = 1 then begin end; end; finally frmFHSQInPut.Free; end; end; procedure TfrmFHSQList.SHDanWeiChange(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 TfrmFHSQList.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 TfrmFHSQList.InitSubGrid(); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then sql.Add('select * from FHSQ_Sub A where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + '''') else sql.Add('select * from FHSQ_Sub A where 1=2'); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmFHSQList.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 TfrmFHSQList.cxTabControl1Change(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmFHSQList.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from FHSQ_Sub A '); sql.Add(' where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; end.