unit U_YMTFHSQList; 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, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinDarkRoom, dxSkinOffice2013White, dxSkinSharpPlus, dxSkinSpringTime, dxSkinsDefaultPainters, dxSkinscxPCPainter, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSilver, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue; type TfrmYMTFHSQList = class(TForm) ToolBar1: TToolBar; TBRafresh: 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; BegDate: TDateTimePicker; EndDate: TDateTimePicker; SHDanWei: TEdit; Salesman: TEdit; 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; v1Column1: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column21: TcxGridDBColumn; v2Column9: TcxGridDBColumn; v2Column10: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v1Column2: TcxGridDBColumn; CDSUser: TClientDataSet; IdHTTP1: TIdHTTP; v2Column6: TcxGridDBColumn; ComboBox1: TComboBox; Label3: TLabel; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; v1Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column5: TcxGridDBColumn; ToolButton2: TToolButton; Panel3: TPanel; Label25: TLabel; btnChk: TButton; Button3: TButton; CRType: TComboBox; v1Column6: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; TbAdd2: TToolButton; Tv2Column1: TcxGridDBColumn; //RMllPDFExport1: TRMllPDFExport; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBCloseClick(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 tchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ComboBox1Change(Sender: TObject); procedure BegDateChange(Sender: TObject); procedure SHDanWeiKeyPress(Sender: TObject; var Key: Char); procedure ToolButton2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure btnChkClick(Sender: TObject); procedure TbAdd2Click(Sender: TObject); 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 frmYMTFHSQList: TfrmYMTFHSQList; implementation uses U_DataLink, U_YMTFHSQInPut, U_Fun, U_ZDYHelp, U_LabelPrintFun, U_YMTFHSQInPut2; {$R *.dfm} procedure TfrmYMTFHSQList.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 TfrmYMTFHSQList.FormDestroy(Sender: TObject); begin frmYMTFHSQList := nil; end; procedure TfrmYMTFHSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmYMTFHSQList.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; canshu1 := DParameters1; end; procedure TfrmYMTFHSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('发货申请YX', Tv1, '发货申请管理'); WriteCxGrid('发货申请YXMX', Tv2, '发货申请管理'); end; procedure TfrmYMTFHSQList.InitGrid(); var fwhere, Pwhere: string; begin Pwhere := SGetFilters(Panel1, 1, 2); try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.* from YMT_FHSQ_Main A'); sql.Add(' where 1=1 '); sql.Add(' and filltime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and filltime<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); if Trim(Self.Caption) = '销售发货申请' then begin sql.Add(' and CRType in (''销售内销'',''销售外销'')'); end else if Trim(Self.Caption) = '加工发货登记' then begin sql.Add(' and CRType in (''加工出库'',''加工内销'',''加工外销'')'); end; if ComboBox1.Text = '未审核' then begin SQL.Add(' and isnull(A.Chker,'''')='''' '); end else if ComboBox1.Text = '已审核' then begin SQL.Add(' and isnull(A.Chker,'''')<>'''' '); end; if Trim(canshu1) <> '高权限' then begin sql.Add(' and isnull(A.Filler,'''')=''' + Trim(DName) + ''''); end; if Pwhere <> '' then sql.Add(' and ' + Pwhere); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmYMTFHSQList.InitForm(); begin ReadCxGrid('发货申请YX', Tv1, '发货申请管理'); ReadCxGrid('发货申请YXMX', Tv2, '发货申请管理'); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime; if Trim(Self.Caption) = '销售发货申请' then begin TBAdd.Visible := True; TBAdd2.Visible := False; end else if Trim(Self.Caption) = '加工发货登记' then begin TBAdd2.Visible := True; TBAdd.Visible := False; end; end; procedure TfrmYMTFHSQList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if trim(Order_Main.fieldbyname('Chker').AsString) <> '' then begin application.MessageBox('已审核数据无法删除!', '提示信息'); exit; end; 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 YMT_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 Trim(Self.Caption) = '销售发货申请' then begin 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 else if Trim(Self.Caption) = '加工发货登记' then begin try frmFHSQInPut2 := TfrmFHSQInPut2.Create(Application); with frmFHSQInPut2 do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FSID').AsString); FZZType := trim(self.FZZType); if ShowModal = 1 then begin end; end; finally frmFHSQInPut2.Free; end; end; end; procedure TfrmYMTFHSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if trim(Order_Main.fieldbyname('Chker').AsString) <> '' then begin application.MessageBox('已审核数据无法删除!', '提示信息'); exit; end; 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 YMT_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 YMT_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 TfrmYMTFHSQList.DelData(): Boolean; begin try Result := false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete YMT_FHSQ_Sub where FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete YMT_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 TfrmYMTFHSQList.TBPrintClick(Sender: TObject); var MPrintJson, JsonResult, msql: string; begin if Order_Main.IsEmpty then Exit; msql := ' select A.*,B.* from YMT_FHSQ_Main A inner join YMT_FHSQ_Sub B on A.FSId=B.FSId where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''; MPrintJson := '{ "LBName": "坯布发货申请单","QrCodeField": "ssid","DConString": "' + DConString + '","DCode": "' + DCode + '","DName": "' + DName + '","IsPreview": true,"printerIndex": 0,"ExportFileType": "", "PrtArgs": [ {"SqlStr": "' + msql + '" }] }'; FunPrint(Application, PChar(MPrintJson)); end; procedure TfrmYMTFHSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); InitSubGrid(); end; procedure TfrmYMTFHSQList.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 TfrmYMTFHSQList.FormShow(Sender: TObject); begin InitForm(); InitGrid(); end; procedure TfrmYMTFHSQList.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmYMTFHSQList.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmYMTFHSQList.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 TfrmYMTFHSQList.tchkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if trim(Order_Main.fieldbyname('Chker').AsString) <> '' then begin application.MessageBox('已审核数据无需审核!', '提示信息'); exit; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from KH_Main '); sql.Add('where KHNO=' + quotedstr(trim(Order_Main.fieldbyname('KHNO').AsString))); open; end; if trim(ADOQueryTemp.fieldbyname('status').AsString) <> '1' then begin application.MessageBox('客户未审核', '提示信息'); exit; end; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YMT_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; InitGrid(); application.MessageBox('审核成功!', '提示信息'); except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmYMTFHSQList.InitSubGrid(); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then sql.Add('select * from YMT_FHSQ_Sub A where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + '''') else sql.Add('select * from YMT_FHSQ_Sub A where 1=2'); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmYMTFHSQList.TnochkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if trim(Order_Main.fieldbyname('Chker').AsString) = '' then begin application.MessageBox('当前数据未审核!', '提示信息'); exit; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from YMT_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 YMT_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; InitGrid(); application.MessageBox('撤销成功!', '提示信息'); except application.MessageBox('撤销失败!', '提示信息', 0); end; end; procedure TfrmYMTFHSQList.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from YMT_FHSQ_Sub A '); sql.Add(' where A.FSId=''' + Trim(Order_Main.fieldbyname('FSId').AsString) + ''''); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmYMTFHSQList.ComboBox1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmYMTFHSQList.BegDateChange(Sender: TObject); begin InitGrid(); end; procedure TfrmYMTFHSQList.SHDanWeiKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then InitGrid(); end; procedure TfrmYMTFHSQList.ToolButton2Click(Sender: TObject); begin Panel3.Visible := True; end; procedure TfrmYMTFHSQList.Button3Click(Sender: TObject); begin Panel3.Visible := False; end; procedure TfrmYMTFHSQList.btnChkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if Order_Main.Locate('SSel', True, []) = False then begin application.MessageBox('请选择数据!', '提示信息'); exit; end; try while Order_Main.Locate('SSel', True, []) do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YMT_FHSQ_Main SET CRType=' + quotedstr(trim(CRType.Text))); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); execsql; end; with Order_Main do begin Edit; FieldByName('SSel').Value := False; FieldByName('CRType').Value := trim(CRType.Text); Post; end; end; Panel3.Visible := False; application.MessageBox('审核成功!', '提示信息'); except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmYMTFHSQList.TbAdd2Click(Sender: TObject); begin try frmFHSQInPut2 := TfrmFHSQInPut2.Create(Application); with frmFHSQInPut2 do begin PState := 0; FMainId := ''; FZZType := trim(self.FZZType); if ShowModal = 1 then begin end; end; finally frmFHSQInPut2.Free; end; InitGrid(); end; end.