unit U_CKProductBCPOutList; 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, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxCheckBox, Menus, MovePanel, RM_E_llPDF, cxCalendar, Math, Clipbrd, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit; type TfrmCKProductBCPOutList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; Label3: TLabel; Label4: TLabel; MPRTCode: TEdit; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; CDS_Main: TClientDataSet; Tv1: TcxGridDBTableView; cxGrid2Level1: TcxGridLevel; cxGrid2: TcxGrid; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; Label5: TLabel; orderNo: TEdit; Label6: TLabel; MJID: TEdit; v1Column7: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; Label8: TLabel; MPRTKZ: TEdit; Label9: TLabel; MPRTMF: TEdit; Label7: TLabel; v1Column3: TcxGridDBColumn; RMXLSExport1: TRMXLSExport; v1Column4: TcxGridDBColumn; Label10: TLabel; CkOrdNo: TEdit; v1Column5: TcxGridDBColumn; v1Column10: TcxGridDBColumn; TBCKCX: TToolButton; v1Column11: TcxGridDBColumn; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; MovePanel2: TMovePanel; DS_JuanPRT: TDataSource; cxGridPopupMenu2: TcxGridPopupMenu; Label11: TLabel; v1Column15: TcxGridDBColumn; v1Column19: TcxGridDBColumn; conNo: TEdit; Label15: TLabel; Label17: TLabel; apid: TEdit; v1Column21: TcxGridDBColumn; v1Column22: TcxGridDBColumn; begtime: TDateTimePicker; endTime: TDateTimePicker; ADOQueryPrint: TADOQuery; RMDB_Main: TRMDBDataSet; v1rkplace: TcxGridDBColumn; RKplace: TEdit; Label19: TLabel; RMDBHZ: TRMDBDataSet; CDS_HZ: TClientDataSet; RM3: TRMGridReport; Label22: TLabel; CustomerNoName: TEdit; Label24: TLabel; CRType: TComboBox; CPType: TComboBox; Panel6: TPanel; Label31: TLabel; LBCPAP: TLabel; BTLP: TButton; BTNP: TButton; TCBNOR: TComboBox; IsJYTime: TCheckBox; PRTColor: TEdit; ganghao: TEdit; v1Column13: TcxGridDBColumn; ComboBox1: TComboBox; ToolButton1: TToolButton; ToolButton2: TToolButton; v1Column14: TcxGridDBColumn; Label1: TLabel; prtkuanno: TEdit; ComboBox2: TComboBox; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; ToolButton3: TToolButton; Panel2: TPanel; ComboBox3: TComboBox; RM2: TRMGridReport; Tv1Column5: TcxGridDBColumn; Label12: TLabel; ZDMJID: TEdit; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; 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 TBExportClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure TBCKCXClick(Sender: TObject); procedure orderNoKeyPress(Sender: TObject; var Key: Char); procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure BTNPClick(Sender: TObject); procedure BTLPClick(Sender: TObject); procedure TCBNORChange(Sender: TObject); procedure CPTypeChange(Sender: TObject); procedure CRTypeChange(Sender: TObject); procedure edtSMNOKeyPress(Sender: TObject; var Key: Char); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private FLeft, FTop: Integer; CurrentPage, RecordsNumber: Integer; procedure InitGrid(); function PrtData(FMJID: string): boolean; { Private declarations } public canshu1: string; FLABEL: string; { Public declarations } end; //var // frmCKProductBCPOutList: TfrmCKProductBCPOutList; implementation uses U_DataLink, U_Fun, U_SysLogHelp, U_LabelList; {$R *.dfm} function TfrmCKProductBCPOutList.PrtData(FMJID: string): boolean; var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin result := false; try with ADOQueryPrint do begin Close; SQL.Clear; sql.Add(' EXEC P_Print_JYLab '); SQL.Add(' @MJID=''' + Trim(FMJID) + ''''); Open; end; SCreateCDS20(ADOQueryPrint, CDS_HZ); SInitCDSData20(ADOQueryPrint, CDS_HZ); try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(ADOQueryPrint.fieldbyname('MJID').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; if Trim(FLABEL) <> '' then begin fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(FLABEL) + '.rmf'; ExportFtErpFile(Trim(FLABEL) + '.rmf', ADOQueryTemp); end else fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\通用英文标签.rmf'; ExportFtErpFile('通用英文标签.rmf', ADOQueryTemp); if FileExists(fPrintFile) then begin RMVariables['QRBARCODE'] := fImagePath; Rm2.DefaultCopies := StrToIntDef(ComboBox3.Text, 1); RM2.LoadFromFile(fPrintFile); //RM2.ShowReport; RM2.PrintReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); result := False; exit; end; result := true; except result := False; end; end; procedure TfrmCKProductBCPOutList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmCKProductBCPOutList.FormCreate(Sender: TObject); begin EndDate.DateTime := SGetServerDateTime(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 20; end; procedure TfrmCKProductBCPOutList.InitGrid(); var fwhere, Pwhere: string; begin MovePanel2.Left := (self.Width - MovePanel2.Width) div 2; MovePanel2.Visible := True; MovePanel2.Refresh; Pwhere := SGetFilters(Panel1, 1, 2); // if IsJYTime.Checked then // begin // fwhere := ' where CRTime>' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)); // fwhere := fwhere + ' and CRTime<=' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)); // if trim(Pwhere) <> '' then // fwhere := fwhere + ' and ' + trim(Pwhere); // end // else begin if trim(Pwhere) <> '' then fwhere := fwhere + ' where ' + trim(Pwhere); end; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add(' select top ' + IntToStr(RecordsNumber) + ' * from '); sql.Add('(select row_number() over(order by AA.filltime desc) as rownumber'); sql.Add(',COUNT(1) OVER() AS TotalCount'); sql.Add(',* from (select A.*,ISCW=(cast((case when isnull((select count(x.YFPZNO) from YF_Money_CR_Sub x where x.YFPZNO = A.CKORDNO ),0)>0 then 1 else 0 end ) as bit)) '); sql.Add(',wcstatus=(select status from fhsq_main f where f.fsid=a.CKORDNO )'); sql.Add(',PGCK=(select TOP 1 CRTYPE from CK_SXPB_CR J INNER JOIN CK_SXPB_CR_MX K ON J.SPID=K.FSID AND K.MJID=a.MJID AND J.CRTYPE=''拼缸及重检出库'' )'); sql.Add(' ,isnull(c_orderno,B.orderNo)orderNo,isnull(c_codename,B.MPRTCodeName)MPRTCodeName,isnull(c_code,B.MPRTCode)MPRTCode, '); sql.Add('isnull(c_mf,B.MPRTMF)MPRTMF,isnull(C_KZ,B.MPRTKZ)MPRTKZ,B.conNo,B.KHconNo'); sql.Add(' ,ISNULL(C_COLOR,C.PRTColor)PRTColor,C.PRTEColor,isnull(C_KUANNO,C.prtkuanno)prtkuanno'); sql.Add(' ,D.CustomerNoName,D.fhDate,D.CRTYPE AS CKTYPE,D.SALESCLASS,C_SALESCLASS,D.SALESMAN'); SQL.Add(',ZDMJID=(SELECT ZDMJID FROM WFB_MJJY E WHERE E.MJID=A.MJID )'); sql.Add(' from CK_BanCP_CR A left join JYOrder_Main B on A.MainId=B.MainId left join JYOrder_Sub C on A.SubId=C.SubId '); sql.Add(' left join FHSQ_MAIN D on A.CKOrdNo=D.FSID '); SQL.Add('inner join CK_BanCP_KC E ON E.MJID=A.MJID'); sql.Add(' where A.CRFlag=''出库'' '); if IsJYTime.Checked then begin sql.Add(' and A.CRTime>' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime))); sql.Add(' and CRTime<=' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1))); end; sql.Add(' ) AA'); sql.Add(fwhere); sql.Add(') temp_row'); sql.Add(' where rownumber> ' + IntToStr((CurrentPage - 1) * RecordsNumber)); // showmessage(sql.Text); Open; end; // with ADOQueryMain do // begin // Close; // sql.Clear; // sql.Add('exec P_Page_FinishClothCK '); // sql.Add('@pageIndex=' + inttostr(CurrentPage)); // sql.Add(',@pageSize=' + inttostr(RecordsNumber)); // sql.Add(',@criteria= ' + quotedstr(fwhere)); // Open; // end; SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber)); MovePanel2.Visible := false; finally ADOQueryMain.EnableControls; MovePanel2.Visible := false; end; end; procedure TfrmCKProductBCPOutList.TBRafreshClick(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); end; end; procedure TfrmCKProductBCPOutList.TBCloseClick(Sender: TObject); begin WriteCxGrid(trim(self.Caption), Tv1, '成品仓库87'); Close; end; procedure TfrmCKProductBCPOutList.FormShow(Sender: TObject); var fsj, fsj2: string; begin ReadCxGrid(trim(self.Caption), Tv1, '成品仓库87'); fsj := ' select distinct (YWY) name from JYOrder_Main '; SInitComBoxBySql(ADOQueryCmd, ComboBox2, False, fsj); fsj := ' select distinct (crtype) name from CK_BanCP_CR where crflag=''出库'' AND crtype<>''样品出库'' ORDER BY crtype'; SInitComBoxBySql(ADOQueryCmd, CRType, False, fsj); CurrentPage := 1; RecordsNumber := 500; if Trim(canshu1) = '管理' then begin TBCKCX.Visible := True; end else begin TBCKCX.Visible := false; end; end; procedure TfrmCKProductBCPOutList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; SelExportData(Tv1, ADOQueryMain, ''); end; procedure TfrmCKProductBCPOutList.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmCKProductBCPOutList.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmCKProductBCPOutList.TBCKCXClick(Sender: TObject); var FFMainId, FPrice, strsql: string; begin if CDS_Main.IsEmpty then Exit; if CDS_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据', '提示', 0); Exit; end; if Application.MessageBox('确定要撤销数据吗?', '提示', 32 + 4) <> IDYES then Exit; MovePanel2.Visible := True; MovePanel2.Refresh; try ADOQueryCmd.Connection.BeginTrans; CDS_Main.DisableControls; with CDS_Main do begin while CDS_Main.Locate('SSel', True, []) = True do begin if CDS_Main.fieldbyname('iscw').AsBoolean = True then begin Application.MessageBox('财务已生成,禁止撤销', '提示', 0); MovePanel2.Visible := False; CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Exit; end; if CDS_Main.fieldbyname('pgck').AsString = '拼缸及重检出库' then begin Application.MessageBox('请先删除拼缸出库申请数据!', '提示', 0); MovePanel2.Visible := False; CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Exit; end; if CDS_Main.fieldbyname('wcstatus').AsString = ' 已完成' then begin Application.MessageBox('发货申请已完成,禁止撤销', '提示', 0); MovePanel2.Visible := False; CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Exit; end; if CDS_Main.fieldbyname('ISNowCycle').AsBoolean then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update CK_BanCP_CR Set CRFlag=''待出库'',CRType='''',CRTime=NULL,CRNote='''',CKOrdNo='''' '); sql.Add(' where ISNowCycle=1 and MJID=''' + Trim(CDS_Main.fieldbyname('MJID').AsString) + ''''); sql.Add(' and CRFlag=''出库'''); sql.Add(' UPdate CK_BanCP_KC Set KCValid=''Y'' '); SQL.Add(' where MJID=''' + Trim(CDS_Main.fieldbyname('MJID').AsString) + ''''); sql.Add(' Update WFB_MJJY Set MJStr2=''已入库'' where MJID=''' + Trim(CDS_Main.fieldbyname('MJID').AsString) + ''' '); sql.Add(' Update CK_Sample_CR Set valid=''N'' where MJID=''' + Trim(CDS_Main.fieldbyname('MJID').AsString) + ''' '); SQL.Add('AND NOTE=''整匹调样,自动入库'' AND CRTYPE=''调样入库'''); sql.Add('exec P_Do_FHSQ ''' + Trim(CDS_Main.fieldbyname('CKORDNO').AsString) + ''''); ExecSQL; end; strsql := '卷ID:' + trim(CDS_Main.FieldByName('MJID').AsString) + ' 出库单号:' + trim(CDS_Main.FieldByName('CKOrdNo').AsString); with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('出库撤销'))); sql.Add(',' + quotedstr(trim(strsql))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; CDS_Main.Delete; end; end; end; CDS_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; MovePanel2.Visible := False; Exit; except MovePanel2.Visible := False; CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('撤销异常!', '提示', 0); end; end; procedure TfrmCKProductBCPOutList.orderNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmCKProductBCPOutList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin Clipboard.SetTextBuf(PChar(Trim(CDS_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmCKProductBCPOutList.Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FLeft := X; FTop := Y; end; procedure TfrmCKProductBCPOutList.BTNPClick(Sender: TObject); begin if CurrentPage < CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.BTLPClick(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.TCBNORChange(Sender: TObject); begin RecordsNumber := StrToInt(TCBNOR.Text); CurrentPage := 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.CPTypeChange(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.CRTypeChange(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmCKProductBCPOutList.edtSMNOKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin end; end; procedure TfrmCKProductBCPOutList.ToolButton1Click(Sender: TObject); var fPrintFile, fPrintFile10, FMainID, FKHName, FFPNo: string; begin if CDS_Main.IsEmpty then Exit; ExportFtErpFile(trim(ComboBox1.Text) + '.rmf', ADOQueryTemp); if trim(ComboBox1.Text) = '出库码单1' then begin with ADOQueryPrint do begin Close; sql.Clear; sql.add('exec P_Print_CKMD4 '); sql.add('@FSID=' + quotedstr(Trim(Trim(CDS_Main.fieldbyname('CKOrdNo').AsString)))); Open; end; end; if trim(ComboBox1.Text) = '出库汇总1' then begin with ADOQueryPrint do begin Close; sql.Clear; sql.add('exec P_Print_CKMD2 '); sql.add('@CKOrdNo=' + quotedstr(Trim(Trim(CDS_Main.fieldbyname('CKOrdNo').AsString)))); Open; end; end; ExportFtErpFile(Trim(ComboBox1.Text) + '.rmf', ADOQueryTemp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(ComboBox1.Text) + '.rmf'; if FileExists(fPrintFile) then begin RM3.LoadFromFile(fPrintFile); RMVariables['ZDR'] := trim(DName); RMVariables['FHYWY'] := trim(ComboBox2.Text); RM3.ShowReport; end else begin Application.MessageBox(PChar('没有找到' + fPrintFile), '提示', 0); end; end; procedure TfrmCKProductBCPOutList.ToolButton2Click(Sender: TObject); begin frmSysLogHelp := TfrmSysLogHelp.create(self); with frmSysLogHelp do begin fModel := self.caption; // facction:='生产指示单删除'; showmodal; free; end; end; procedure TfrmCKProductBCPOutList.ToolButton3Click(Sender: TObject); begin if CDS_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; FLABEL := ''; try frmLabelList := TfrmLabelList.Create(Application); with frmLabelList do begin if ShowModal = 1 then begin FLABEL := Trim(ADOQueryLabel.fieldbyname('labelCaption').AsString); end; end; finally frmLabelList.Free; end; if FLABEL = '' then Exit; with CDS_Main do begin DisableControls; first; while not Eof do begin if Self.CDS_Main.FieldByName('SSEl').AsBoolean = True then begin if not PrtData(CDS_Main.fieldbyname('MJID').AsString) then begin EnableControls; exit; end; end; Next; end; EnableControls; end; end; end.