unit U_CKPDlist; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Common, RM_Class, RM_e_Xls, RM_GridReport, RM_System, RM_Dataset, cxPC, MovePanel, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, cxCheckBox, cxSplitter; type TfrmCKPDlist = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_CodeName: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1CRTime: TcxGridDBColumn; v1Filler: TcxGridDBColumn; Label3: TLabel; Label4: TLabel; C_CodeName: TEdit; P_Code: TEdit; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; v1CPTYPE: TcxGridDBColumn; ckName: TComboBox; Label6: TLabel; v1P_Color: TcxGridDBColumn; ADOPrint: TADOQuery; RMDB_MD: TRMDBDataSet; RMGridReport1: TRMGridReport; RMXLSExport1: TRMXLSExport; v1inoutNO: TcxGridDBColumn; kuwei: TEdit; Label8: TLabel; cxTabControl1: TcxTabControl; C_Color: TEdit; Label9: TLabel; custName: TEdit; Label2: TLabel; Tchk: TToolButton; Tnochk: TToolButton; Label5: TLabel; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; TBPD: TToolButton; MovePanel2: TMovePanel; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; CheckBox1: TCheckBox; CheckBox2: TCheckBox; Tv1Column3: TcxGridDBColumn; Label7: TLabel; C_KUWEI: TEdit; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn5: TcxGridDBColumn; TV2Column5: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; TV2Column6: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxSplitter1: TcxSplitter; CDS_MX: TClientDataSet; DataSource3: TDataSource; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; TV2Column3: TcxGridDBColumn; ToolButton1: TToolButton; Tv1Column4: TcxGridDBColumn; RM3: TRMGridReport; RMDBHZ: TRMDBDataSet; CDS_PRT: TClientDataSet; ADOQueryPrint: TADOQuery; ADOQueryMain: TADOQuery; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure C_CodeNameChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure TchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure TBPDClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton1Click(Sender: TObject); private procedure InitGrid(); procedure SetStatus(); procedure Initsub(); { Private declarations } public fCKName: string; canshu1: string; { Public declarations } end; var frmCKPDlist: TfrmCKPDlist; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_PDSMEdit, U_FUN; {$R *.dfm} procedure TfrmCKPDlist.InitSUB(); begin try ADOQueryCmd.DisableControls; if CheckBox1.Checked = True then begin with ADOQueryCmd do begin Filtered := False; Close; sql.Clear; SQL.Add('SELECT * from CK_BanCP_PD'); SQL.Add(' WHERE 1=1 '); //KCVALID=''Y'' SQL.Add('AND ISNULL(C_KUWEI,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('C_KUWEI').AsString))); // SQL.Add('AND ISNULL(QtyUnit,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('QtyUnit').AsString))); SQL.Add('AND ISNULL(PDID,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('PDID').AsString))); Open; end; end; if CheckBox2.Checked = True then begin with ADOQueryCmd do begin Filtered := False; Close; sql.Clear; SQL.Add('SELECT * from CK_BanCP_PD'); SQL.Add(' WHERE 1=1 '); //KCVALID=''Y'' SQL.Add('AND ISNULL(C_KUWEI,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('C_KUWEI').AsString))); // SQL.Add('AND ISNULL(QtyUnit,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('QtyUnit').AsString))); SQL.Add('AND ISNULL(c_codename,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('c_codename').AsString))); SQL.Add('AND ISNULL(c_color,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('c_color').AsString))); SQL.Add('AND ISNULL(C_GANGNO,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('C_GANGNO').AsString))); SQL.Add('AND ISNULL(PDID,'''')=' + QuotedStr(Trim(CDS_Main.fieldbyname('PDID').AsString))); // ShowMessage(sql.Text); Open; end; end; SCreateCDS20(ADOQueryCmd, CDS_MX); SInitCDSData20(ADOQueryCmd, CDS_MX); finally ADOQueryCmd.EnableControls; end; end; procedure TfrmCKPDlist.SetStatus(); begin Tchk.Visible := false; Tnochk.Visible := false; case cxTabControl1.TabIndex of 0: begin Tchk.Visible := true; Tnochk.Visible := true; end; 1: begin end; end; end; procedure TfrmCKPDlist.InitGrid(); begin try if (CheckBox1.Checked = False) and (CheckBox2.Checked = False) then begin with ADOQueryMain do begin close; sql.Clear; sql.Add('select A.* '); sql.Add('from CK_BanCP_PD A'); sql.Add('where begTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and begTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); if trim(FckName) <> '' then sql.Add('and ckName=' + quotedstr(trim(FckName))); if cxTabControl1.TabIndex < 2 then sql.Add('and A.status=''' + inttostr(cxTabControl1.TabIndex) + ''' '); open; end; end else if (CheckBox1.Checked = true) then begin with ADOQueryMain do begin close; sql.Clear; sql.Add('select PDID,convert(varchar(10),begTime,120)begTime,C_KUWEI,SUM(QTY)QTY,SUM(PRollNum)PRollNum,SUM(PQty)PQty '); SQL.Add(',SUM(KCKGQTY)KCKGQTY,COUNT(MJID)rollnum ,convert(varchar(10),endTime,120)endTime,FILLER'); sql.Add('from CK_BanCP_PD A'); sql.Add('where begTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and begTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); if trim(FckName) <> '' then sql.Add('and ckName=' + quotedstr(trim(FckName))); if cxTabControl1.TabIndex < 2 then sql.Add('and A.status=''' + inttostr(cxTabControl1.TabIndex) + ''' '); SQL.Add('GROUP BY PDID,convert(varchar(10),begTime,120),C_KUWEI,convert(varchar(10),endTime,120),FILLER'); open; end; end else if (CheckBox2.Checked = True) then begin with ADOQueryMain do begin close; sql.Clear; sql.Add('select PDID,convert(varchar(10),begTime,120)begTime,C_KUWEI,C_GANGNO,C_CODENAME,C_COLOR,SUM(QTY)QTY,SUM(PRollNum)PRollNum,SUM(PQty)PQty '); SQL.Add(',SUM(KCKGQTY)KCKGQTY,COUNT(MJID)rollnum ,convert(varchar(10),endTime,120)endTime,FILLER'); sql.Add('from CK_BanCP_PD A'); sql.Add('where begTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and begTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); if trim(FckName) <> '' then sql.Add('and ckName=' + quotedstr(trim(FckName))); if cxTabControl1.TabIndex < 2 then sql.Add('and A.status=''' + inttostr(cxTabControl1.TabIndex) + ''' '); SQL.Add('GROUP BY PDID,C_GANGNO,C_CODENAME,C_COLOR,convert(varchar(10),begTime,120),C_KUWEI,convert(varchar(10),endTime,120),FILLER'); open; end; end; SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); finally end; end; procedure TfrmCKPDlist.FormClose(Sender: TObject; var Action: TCloseAction); begin writeCxGrid(self.Caption, Tv1, '成品仓库'); Action := cafree; end; procedure TfrmCKPDlist.FormDestroy(Sender: TObject); begin frmCKPDlist := nil; end; procedure TfrmCKPDlist.C_CodeNameChange(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); end; procedure TfrmCKPDlist.FormShow(Sender: TObject); begin readCxGrid(self.Caption, Tv1, '成品仓库'); SetStatus(); InitGrid(); end; procedure TfrmCKPDlist.FormCreate(Sender: TObject); begin BegDate.Date := date() - 7; EndDate.Date := date(); cxGrid1.Align := alclient; end; procedure TfrmCKPDlist.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmCKPDlist.TBRafreshClick(Sender: TObject); begin initGrid(); end; procedure TfrmCKPDlist.TBExportClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmCKPDlist.cxTabControl1Change(Sender: TObject); begin SetStatus(); initGrid(); end; procedure TfrmCKPDlist.TchkClick(Sender: TObject); var fPDId: string; begin with adoqueryTmp do begin close; sql.Clear; sql.Add('select A.* '); sql.Add('from CK_BanCP_PD A'); sql.Add('WHERE A.status=0 '); open; end; if not adoqueryTmp.IsEmpty then begin application.MessageBox('有未结束的盘点记录,请检查!', '提示信息', MB_ICONERROR); exit; end; with adoqueryTmp do begin close; sql.Clear; sql.Add('select A.C_Code as C_CODENAME,A.C_Color,c_kuwei,c_gangno,kckgqty,A.KCQtyUnit, RollNum=1,KCQty,mjid '); sql.Add('from CK_BanCP_KC A '); sql.Add('where KCValid=''Y'' '); sql.Add('order by A.C_Code,A.C_Color,A.KCQtyUnit '); open; end; if GetLSNo(ADOQueryCmd, fPDId, 'PD', 'CK_BanCP_PD', 3, 1) = False then begin Application.MessageBox('取应收最大号失败!', '提示', 0); Exit; end; MovePanel2.Left := (self.Width - MovePanel2.Width) div 2; MovePanel2.Visible := True; MovePanel2.Refresh; ADOQueryCmd.Connection.BeginTrans; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_PD where 1=2'); open; end; while not adoqueryTmp.Eof do begin with ADOQueryCmd do begin append; fieldbyName('PDID').Value := fPDId; fieldbyName('PDNO').Value := adoqueryTmp.recNo; fieldbyName('CKName').Value := FckName; fieldbyName('C_CodeName').Value := trim(adoqueryTmp.fieldbyName('C_CodeName').AsString); fieldbyName('C_Color').Value := trim(adoqueryTmp.fieldbyName('C_Color').AsString); fieldbyName('MJID').Value := trim(adoqueryTmp.fieldbyName('MJID').AsString); fieldbyName('C_kuwei').Value := trim(adoqueryTmp.fieldbyName('C_kuwei').AsString); fieldbyName('C_gangno').Value := trim(adoqueryTmp.fieldbyName('C_gangno').AsString); fieldbyName('RollNum').Value := adoqueryTmp.fieldbyName('RollNum').AsInteger; fieldbyName('Qty').Value := adoqueryTmp.fieldbyName('KCQty').AsFloat; fieldbyName('kckgQty').Value := adoqueryTmp.fieldbyName('kckgQty').AsFloat; fieldbyName('QtyUnit').Value := trim(adoqueryTmp.fieldbyName('KCQtyUnit').AsString); fieldbyName('Filler').Value := trim(DName); post; end; adoqueryTmp.Next; end; //说明: CK_BanCP_KC PDFlag: 0:初始入库状态,-1,已经出库的库存,1:有库存的数据,2:盘点的数据 with ADOQueryCmd do begin close; sql.Clear; sql.Add('update CK_BanCP_KC SET PDFlag=-1 where KCVALID=''N'' '); sql.Add('update CK_BanCP_KC SET PDFlag=1 where KCVALID=''Y'' '); execsql; end; MovePanel2.Visible := false; ADOQueryCmd.Connection.CommitTrans; TBRafresh.Click; except MovePanel2.Visible := false; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成盘点数据错误!', '提示信息', MB_ICONERROR); end; end; procedure TfrmCKPDlist.TnochkClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if Application.MessageBox('确定盘点数据完成吗?', '提示', 32 + 4) <> IDYES then Exit; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update CK_BanCP_KC SET PDFlag=0 where PDFlag<>0 '); sql.Add('update CK_BanCP_PD SET status=1 where pdid=''' + trim(CDS_Main.fieldbyName('pdid').AsString) + ''' '); execsql; end; TBRafresh.Click; except Application.MessageBox('盘点结束失败!', '提示信息', 0); end; end; procedure TfrmCKPDlist.TBPDClick(Sender: TObject); begin frmPDSMEdit := TfrmPDSMEdit.Create(self); with frmPDSMEdit do begin show; end; end; procedure TfrmCKPDlist.CheckBox1Click(Sender: TObject); begin v1P_CodeName.Visible := TRUE; v1P_Color.Visible := TRUE; Tv1Column1.Visible := True; C_CodeName.Enabled := TRUE; C_CoLOR.Enabled := True; if CheckBox1.Checked = True then begin CheckBox2.Checked := False; v1P_CodeName.Visible := False; v1P_Color.Visible := False; Tv1Column1.Visible := False; C_CodeName.Enabled := False; C_CoLOR.Enabled := False; end; InitGrid(); end; procedure TfrmCKPDlist.CheckBox2Click(Sender: TObject); begin v1P_CodeName.Visible := TRUE; v1P_Color.Visible := TRUE; Tv1Column1.Visible := True; if CheckBox2.Checked = True then begin CheckBox1.Checked := False; v1P_CodeName.Visible := TRUE; v1P_Color.Visible := TRUE; Tv1Column1.Visible := True; end; InitGrid(); end; procedure TfrmCKPDlist.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if CDS_Main.IsEmpty = True then Exit; Initsub(); end; procedure TfrmCKPDlist.ToolButton1Click(Sender: TObject); var fPrintFile, fPrintFile10, FMainID, FKHName, FFPNo: string; begin if CheckBox1.Checked = False then begin Application.MessageBox('请选择按库位汇总!', '提示信息', 0); Exit; end; if CDS_Main.IsEmpty then Exit; ExportFtErpFile('盘库码单.rmf', ADOQueryTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\盘库码单.rmf'; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete TBSubID where DName=''' + Trim(DCode) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('SELECT * FROM TBSubID where 1=2 '); open; end; FMainID := ''; CDS_Main.DisableControls; try ADOQueryCmd.Connection.BeginTrans; with CDS_Main do begin First; while not Eof do begin if Fieldbyname('Ssel').AsBoolean then begin ADOQueryCmd.append; // ADOQueryCmd.fieldbyname('ZID').Value := Trim(CDS_Main.fieldbyname('PDID').AsString); ADOQueryCmd.fieldbyname('SubId').Value := Trim(CDS_Main.fieldbyname('C_KUWEI').AsString); ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode); ADOQueryCmd.post; end; Next; end; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; end; CDS_Main.EnableControls; with ADOQueryPrint do begin Close; sql.Clear; sql.add(' EXEC P_Print_KWPDB @PDID=' + QuotedStr(Trim(CDS_Main.fieldbyname('PDID').AsString))); SQL.Add(',@DNAME=' + QuotedStr(Trim(DCode))); Open; end; SCreateCDS20(ADOQueryPrint, CDS_PRT); SInitCDSData20(ADOQueryPrint, CDS_PRT); 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; end.