unit U_QXKHList; 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, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmQXKHLIST = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; TBfind: TToolButton; ADOQueryMain: TADOQuery; TBexcel: TToolButton; RM1: TRMGridReport; RMDB_MD: TRMDBDataSet; Label3: TLabel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2Column4: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Label6: TLabel; begdate: TDateTimePicker; Enddate: TDateTimePicker; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; TBAdd: TToolButton; TBEdit: TToolButton; fpno: TEdit; ywy: TEdit; v2Column3: TcxGridDBColumn; v2Column7: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column11: TcxGridDBColumn; Label5: TLabel; ToolButton1: TToolButton; cxTabControl1: TcxTabControl; TBChk: TToolButton; TBNochk: TToolButton; v2Column17: TcxGridDBColumn; TBPrint: TToolButton; AdoPrint: TADOQuery; Label4: TLabel; OrderNo: TEdit; Tv2Column1: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; Tv2Column3: TcxGridDBColumn; Label7: TLabel; begdate2: TDateTimePicker; enddate2: TDateTimePicker; CheckBox1: TCheckBox; CheckBox2: TCheckBox; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBfindClick(Sender: TObject); procedure TBexcelClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure FeeTypeChange(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure TBChkClick(Sender: TObject); procedure TBNochkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); private { Private declarations } procedure InitGrid(); procedure SetStatus(); function YSData(): Boolean; public fSYRName: string; fflag: integer; canshu1: string; { Public declarations } end; var frmQXKHLIST: TfrmQXKHLIST; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_SPDJEdit, U_FjList10; {$R *.dfm} function TfrmQXKHLIST.YSData(): Boolean; var CRID, YFID, Price, PriceUnit, OrderUnit, FComTaiTou: string; begin Result := False; with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryName=''' + Trim(CDS_HZ.fieldbyname('factoryname').asstring) + ''''); sql.Add(' and YFDefFlag1=0 '); Open; end; if not ADOQueryTemp.IsEmpty 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_HZ.fieldbyname('factoryname').asstring); FieldByName('ZdyStr1').Value := '应收收'; Post; end; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete from YF_Money_CR where MainID=''' + Trim(CDS_HZ.fieldbyname('CRNO').asstring) + ''' and YFName=''扣损'' and isnull(mainID,'''')<>'''' '); execsql; end; if GetLSNo(ADOQueryCmd, YFID, 'CS', 'YF_Money_CR', 3, 1) = False then begin Application.MessageBox('取应收最大号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where 1=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('YFID').Value := Trim(YFID); FieldByName('YFTypeId').Value := Trim(CDS_HZ.fieldbyname('CRNO').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_HZ.fieldbyname('factoryName').asstring); FieldByName('CRTime').Value := Trim(FormatDateTime('yyyy-MM-dd', CDS_HZ.fieldbyname('CRTime').AsDateTime)); FieldByName('YFType').Value := '自动生成'; FieldByName('Price').Value := 0; FieldByName('PS').Value := -1 * 1; FieldByName('Qty').Value := -1 * CDS_HZ.fieldbyname('Qty').AsFloat; FieldByName('Price').Value := CDS_HZ.fieldbyname('Price').AsFloat; FieldByName('money').Value := CDS_HZ.fieldbyname('money').AsFloat; FieldByName('BBmoney').Value := CDS_HZ.fieldbyname('money').AsFloat; FieldByName('P_CodeName').Value := CDS_HZ.fieldbyname('C_CodeName').AsString; FieldByName('P_Color').Value := CDS_HZ.fieldbyname('C_Color').AsString; FieldByName('HuiLv').Value := 1; FieldByName('BZType').Value := '人民币'; FieldByName('QtyUnit').Value := CDS_HZ.fieldbyname('QtyUnit').AsString; FieldByName('ComTaiTou').Value := Trim(CDS_HZ.fieldbyname('factoryName').asstring); FieldByName('YFName').Value := '扣损'; FieldByName('MainId').Value := Trim(CDS_HZ.fieldbyname('CRNO').asstring); FieldByName('subID').Value := ''; FieldByName('SYRName').Value := '宏强现货'; FieldByName('note').Value := CDS_HZ.fieldbyname('Note').AsString; FieldByName('status').Value := '0'; Post; end; Result := True; end; procedure TfrmQXKHLIST.SetStatus(); begin // TBedit.Visible := false; // TBdel.Visible := false; // TBchk.Visible := false; // TBnochk.Visible := false; // // if canshu1 = '业务员登记' then // begin // case cxTabControl1.TabIndex of // 0: // begin // TBedit.Visible := true; // TBdel.Visible := true; // end; // 1: // begin // end; // 2: // begin // end; // end; // end // else // begin // case cxTabControl1.TabIndex of // 0: // begin // TBedit.Visible := true; // TBdel.Visible := true; // TBchk.Visible := true; // end; // 1: // begin // TBnochk.Visible := true; // end; // 2: // begin // end; // end; // end; end; procedure TfrmQXKHLIST.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; Filtered := False; SQL.Clear; sql.Add(' select A.* from kh_LIST A '); sql.Add('where 1=1 '); if CheckBox1.Checked = True then begin sql.Add('and CRTime>=''' + FormatDateTime('yyyy-MM-dd', BegDate.DateTime) + ''' '); sql.Add('and CRTime<''' + FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1) + ''' '); end; if CheckBox2.Checked = True then begin sql.Add('and fstime>=''' + FormatDateTime('yyyy-MM-dd', BegDate2.DateTime) + ''' '); sql.Add('and fstime<''' + FormatDateTime('yyyy-MM-dd', enddate2.DateTime + 1) + ''' '); end; if cxTabControl1.TabIndex < 2 then begin sql.Add('and status=''' + inttostr(cxTabControl1.TabIndex) + ''' '); end; Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); finally ADOQueryMain.EnableControls; TBfind.Click; end; end; procedure TfrmQXKHLIST.FormDestroy(Sender: TObject); begin frmQXKHLIST := nil; end; procedure TfrmQXKHLIST.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmQXKHLIST.TBCloseClick(Sender: TObject); begin WriteCxGrid(Self.Caption + Tv2.Name, Tv2); Close; end; procedure TfrmQXKHLIST.TBDelClick(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin close; sql.Clear; sql.Add(' delete kh_LIST where KHID=''' + Trim(CDS_HZ.fieldbyname('KHID').AsString) + ''' '); execsql; end; ADOQueryCmd.Connection.CommitTrans; InitGrid(); except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('操作失败!', '提示信息', 0); end; end; procedure TfrmQXKHLIST.FormShow(Sender: TObject); begin ReadCxGrid(Self.Caption + Tv2.Name, Tv2); Enddate.DateTime := SGetServerDate(ADOQueryTemp); begdate.DateTime := Enddate.DateTime; Enddate2.DateTime := SGetServerDate(ADOQueryTemp); begdate2.DateTime := Enddate.DateTime; SetStatus(); initGrid(); end; procedure TfrmQXKHLIST.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmQXKHLIST.TBfindClick(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); end; procedure TfrmQXKHLIST.TBexcelClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); end; procedure TfrmQXKHLIST.TBAddClick(Sender: TObject); begin try frmSPDJEdit := TfrmSPDJEdit.Create(Application); with frmSPDJEdit do begin fkeyNo := ''; fflag := self.fflag; fSyrname := self.fSYRName; canshu1 := self.canshu1; if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmSPDJEdit.Free; end; end; procedure TfrmQXKHLIST.FeeTypeChange(Sender: TObject); begin TBfind.Click; end; procedure TfrmQXKHLIST.TBEditClick(Sender: TObject); begin if CDS_HZ.IsEmpty then exit; try frmSPDJEdit := TfrmSPDJEdit.Create(Application); with frmSPDJEdit do begin fkeyNo := Trim(Self.CDS_HZ.FieldByName('KHID').AsString); fflag := self.fflag; fSyrname := self.fSYRName; canshu1 := self.canshu1; if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmSPDJEdit.Free; end; end; procedure TfrmQXKHLIST.ToolButton1Click(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; try frmFjList10 := TfrmFjList10.Create(Application); with frmFjList10 do begin // PState:=1; // if Trim(canshu1)<>'高权限' then cxButton1.Visible:=false; fkeyNO := Trim(Self.CDS_HZ.fieldbyname('KHID').AsString); fType := '检测报告'; if ShowModal = 1 then begin end; end; finally frmFjList10.Free; end; end; procedure TfrmQXKHLIST.TBChkClick(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; ADOQueryCmd.Connection.BeginTrans; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update kh_LIST SET status=''1'' '); sql.Add('where KHID=' + quotedstr(trim(CDS_HZ.fieldbyname('KHID').AsString))); execsql; end; if not YSData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应收款失败!', '提示信息', 0); exit; end; ADOQueryCmd.Connection.CommitTrans; // application.MessageBox('审核撤销成功!','提示信息'); TBRafresh.Click; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmQXKHLIST.TBNochkClick(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update BP_Problem SET status=''0'' where CRNo=' + quotedstr(trim(CDS_HZ.fieldbyname('CRNo').AsString))); sql.Add('delete from YF_Money_CR where MainID=''' + Trim(CDS_HZ.fieldbyname('CRNO').asstring) + ''' and YFName=''扣损'' and isnull(mainID,'''')<>'''' '); execsql; end; // application.MessageBox('审核撤销成功!','提示信息'); TBRafresh.Click; except application.MessageBox('审核撤销失败!', '提示信息', 0); end; end; procedure TfrmQXKHLIST.cxTabControl1Change(Sender: TObject); begin SetStatus(); initGrid(); end; procedure TfrmQXKHLIST.TBPrintClick(Sender: TObject); var filepath: string; i: integer; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if CDS_HZ.IsEmpty then exit; filepath := ExtractFilePath(Application.ExeName) + 'report\成品扣损单.rmf'; if not FileExists(Pchar(filepath)) then begin application.MessageBox(pchar('文件[' + filepath + ']不存在!'), '提示信息', MB_IConError); exit; end; with AdoPrint do begin close; sql.Clear; sql.Add('select * from BP_Problem'); sql.Add('where CRNo=' + quotedstr(trim(CDS_HZ.fieldbyname('CRNo').AsString))); open; end; try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(AdoPrint.fieldbyname('CRNO').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; RMVariables['dtxz'] := FormatDateTime('yyyy-mm-dd', date()); RMVariables['zdr'] := trim(DName); RM1.LoadFromFile(filepath); RM1.ShowReport; end; procedure TfrmQXKHLIST.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmQXKHLIST.CheckBox2Click(Sender: TObject); begin InitGrid(); end; end.