unit U_CaiGouSQList; 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, cxCalendar, cxButtonEdit, cxSplitter, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxTextEdit, cxPC, cxDropDownEdit, cxCheckBox, cxLookAndFeels, cxLookAndFeelPainters, dxBarBuiltInMenu, cxNavigator; type TfrmCaiGouSQList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; Order_Main: TClientDataSet; Panel1: TPanel; Label1: TLabel; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; TBFind: TToolButton; SPName: TEdit; Label4: TLabel; SQPerson: TEdit; Label5: TLabel; TBSS: TToolButton; TBSSCX: TToolButton; cxTabControl1: TcxTabControl; Label3: TLabel; Label6: TLabel; PinPai: TEdit; FactoryName: TEdit; Label7: TLabel; orderno: TEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1SSel: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column14: TcxGridDBColumn; v1Column15: TcxGridDBColumn; v1Column16: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1SQMoney: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column11: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; ToolButton1: TToolButton; CDS_PRT: TClientDataSet; RMDBPRT: TRMDBDataSet; RM1: TRMGridReport; v1Column21: TcxGridDBColumn; v1Column22: TcxGridDBColumn; TBEditGQX: TToolButton; v1Column28: TcxGridDBColumn; v1SQPrice: TcxGridDBColumn; v1Column31: TcxGridDBColumn; cxgrdCGNote: TcxGridDBColumn; btn1: TToolButton; cv1Column4: TcxGridDBColumn; btn2: TToolButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBSSClick(Sender: TObject); procedure TBSSCXClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure TBEditGQXClick(Sender: TObject); procedure DataTypeChange(Sender: TObject); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private canshu1, canshu2, ChildFlag: string; procedure InitGrid(); procedure InitForm(); function DelData(): Boolean; { Private declarations } public { Public declarations } end; implementation uses U_DataLink, U_RTFun, U_CaiGouSQInPut, U_ModuleNote; {$R *.dfm} procedure TfrmCaiGouSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin application := mainapplication; Action := caFree; end; procedure TfrmCaiGouSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid(Self.Caption, Tv1, '采购申请管理9'); end; procedure TfrmCaiGouSQList.InitGrid(); begin BegDate.SetFocus; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; sql.Add(' select A.* '); sql.Add(',Case when isnull(DataType,'''')<>'''' then ''(''+DataType+'')'' else '''' end as DataTypePrt '); sql.Add(',Case when (isnull(SQQtyUp,0)+isnull(SQQty,0))<>0 then Cast(SQQty*(1+SQQtyUp*0.01) as decimal(18,2)) end as MAXJHQty'); sql.Add(',Case when (isnull(SQQtyUpHZ,0)+isnull(SQQtyHZ,0))<>0 then Cast(SQQtyHZ*(1+SQQtyUpHZ*0.01) as decimal(18,2)) end as MAXJHQtyHZ'); // sql.Add(',DHBL=Cast( case when (SQQty*(1+isnull(SQQtyUp,0)*0.01))>0 then (case when SQQty*(1+isnull(SQQtyUp,0)*0.01)>SQQty then DHQty/SQQty else DHQty/(SQQty*(1+isnull(SQQtyUp,0)*0.01)) end) else 1 end as decimal(18,2))'); SQL.Add(' from CaiGou_SQ A WHERE 1=1 '); if Trim(canshu1) = '录入' then begin sql.Add(' and SQPERSON=''' + Trim(DName) + ''''); end; if Trim(canshu1) <> '查询' then begin if cxTabControl1.TabIndex = 0 then begin sql.Add(' and isnull(SChkStatus,'''')='''' '); end else if cxTabControl1.TabIndex = 1 then begin sql.Add(' and isnull(SChkStatus,'''')<>'''' and isnull(ChkStatus,'''')='''' '); end else if cxTabControl1.TabIndex = 2 then begin sql.Add(' and isnull(ChkStatus,'''')<>'''' '); end; if cxTabControl1.TabIndex <> 0 then begin sql.Add(' and A.SQDate>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and A.SQDate<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); end; end else begin sql.Add(' and A.SQDate>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and A.SQDate<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); sql.Add(' and isnull(Chker,'''')<>'''' '); end; sql.Add(' order by ChkTime desc,SQDate desc'); // ShowMessage(SQL.Text); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmCaiGouSQList.InitForm(); begin if Self.Caption = '采购加工申请录入' then begin canshu1 := '录入'; TBEditGQX.Visible := False; end else if Self.Caption = '采购加工申请高权限' then begin canshu1 := '高权限'; TBEditGQX.Visible := True; end; EndDate.Date := SGetServerDate(ADOQueryTemp); BegDate.Date := EndDate.Date - 7; ReadCxGrid(Self.Caption, Tv1, '采购申请管理9'); TBSS.Visible := False; TBSSCX.Visible := False; btn1.Visible := False; btn2.Visible := False; if cxTabControl1.TabIndex = 0 then begin TBSS.Visible := True; end; if cxTabControl1.TabIndex = 1 then begin if canshu1 = '高权限' then begin btn1.Visible := True; end; TBSSCX.Visible := True; end; if cxTabControl1.TabIndex = 2 then begin if canshu1 = '高权限' then begin btn2.Visible := True; end; end; if cxTabControl1.TabIndex = 3 then begin btn1.Visible := False; end; InitGrid(); end; procedure TfrmCaiGouSQList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; {if Self.Caption<>'纱线采购加工申请高权限' then begin if cxTabControl1.TabIndex<>0 then Exit; end;} try frmCaiGouSQInPut := TfrmCaiGouSQInPut.Create(Application); with frmCaiGouSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('SQID').AsString); // frmCaiGouSQInPut.ToolButton3.Visible := False; frmCaiGouSQInPut.ToolButton4.Visible := False; FSQType := Trim(Self.canshu2); {if Self.Caption='纱线采购加工申请高权限' then begin ZFormName:='可修改'; end; } if ShowModal = 1 then begin end; end; finally frmCaiGouSQInPut.Free; end; end; procedure TfrmCaiGouSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if DelData() then begin Order_Main.Delete; end; end; function TfrmCaiGouSQList.DelData(): Boolean; begin try Result := false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete CaiGou_SQ where SQId=''' + Trim(Order_Main.fieldbyname('SQId').AsString) + ''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Result := True; except ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('数据删除异常!', '提示', 0); end; end; procedure TfrmCaiGouSQList.TBExportClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; TcxGridToExcel('纱线采购加工申请列表', cxGrid1); end; procedure TfrmCaiGouSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmCaiGouSQList.TBAddClick(Sender: TObject); begin try frmCaiGouSQInPut := TfrmCaiGouSQInPut.Create(Application); with frmCaiGouSQInPut do begin PState := 0; FMainId := ''; FSQType := Trim(Self.canshu2); frmCaiGouSQInPut.Canshu1 := Trim(Self.canshu1); if ShowModal = 1 then begin end; end; finally frmCaiGouSQInPut.Free; end; end; procedure TfrmCaiGouSQList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmCaiGouSQList.cxPageControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmCaiGouSQList.ToolButton3Click(Sender: TObject); begin try frmModuleNote := TfrmModuleNote.Create(Application); with frmModuleNote do begin flag := '采购申请登记'; if ShowModal = 1 then begin end; end; finally frmModuleNote.Free; end; end; procedure TfrmCaiGouSQList.cxTabControl1Change(Sender: TObject); begin TBSS.Visible := False; TBSSCX.Visible := False; btn1.Visible := False; btn2.Visible := False; if cxTabControl1.TabIndex = 0 then begin TBSS.Visible := True; end; if cxTabControl1.TabIndex = 1 then begin if canshu1 = '高权限' then begin btn1.Visible := True; end; TBSSCX.Visible := True; end; if cxTabControl1.TabIndex = 2 then begin if canshu1 = '高权限' then begin btn2.Visible := True; end; end; if cxTabControl1.TabIndex = 3 then begin btn1.Visible := False; end; InitGrid(); end; procedure TfrmCaiGouSQList.TBFindClick(Sender: TObject); begin BegDate.SetFocus; if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); end; procedure TfrmCaiGouSQList.TBSSClick(Sender: TObject); begin if cxTabControl1.TabIndex <> 0 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Locate('SSel', True, []) = True do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate CaiGou_SQ Set SChkStatus=''已送审'',SChktime=getdate(),SChker=''' + Trim(DName) + ''''); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; Order_Main.Delete; end; end; Order_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!', '提示', 0); end; end; procedure TfrmCaiGouSQList.TBSSCXClick(Sender: TObject); begin if cxTabControl1.TabIndex <> 1 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Locate('SSel', True, []) = True do begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from CaiGou_SQ '); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); Open; end; if Trim(ADOQueryTemp.fieldbyname('ChkStatus').AsString) = '已审核' then begin Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; InitGrid(); Application.MessageBox('已审核的数据不能撤销!', '提示', 0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate CaiGou_SQ Set SChkStatus=Null,SChktime=getdate(),SChker=''' + Trim(DName) + ''''); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; Order_Main.Delete; end; end; Order_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!', '提示', 0); end; end; procedure TfrmCaiGouSQList.FormDestroy(Sender: TObject); begin //frmCaiGouSQList:=nil; end; procedure TfrmCaiGouSQList.ToolButton1Click(Sender: TObject); var fPrintFile, FPBName, maxno: string; begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 2 then Exit; if Order_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; if GetLSNoHZ(ADOQueryCmd, maxno, 'PL', 'PRT_Log', 4, 1, 3) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取打印流水号失败!', '提示', 0); Exit; end; Order_Main.DisableControls; with Order_Main do begin First; while not eof do begin if Order_Main.FieldByName('SSel').AsBoolean = True then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate CaiGou_SQ Set PrtCS=isnull(PrtCS,0)+1,PrtTime=Getdate(),PrtPerson=''' + Trim(DName) + ''''); sql.Add(',PrtHBNO=''' + Trim(maxno) + ''''); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into PRT_Log(WBId,WBType,PrtPerson,PrtTime,PrtCS,PrtHBNO)'); sql.Add('select SQID,''纱线采购申请→CaiGou_SQ'',PrtPerson,PrtTime, PrtCS,''' + Trim(maxno) + ''''); sql.Add(' from CaiGou_SQ'); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; end; Next; end; end; Order_Main.EnableControls; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select FactoryName from CaiGou_SQ where PrtHBNO=''' + Trim(maxno) + ''''); sql.Add('group by FactoryName'); Open; end; if ADOQueryTemp.RecordCount > 1 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('不同供应商不能同时打印!', '提示', 0); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select FactoryName from CaiGou_SQ where PrtHBNO=''' + Trim(maxno) + ''''); Open; end; if ADOQueryTemp.RecordCount > 6 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('一张打印单不能多于6条数据!', '提示', 0); Exit; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('打印异常!', '提示', 0); Exit; end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\原料采购单.rmf'; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select A.* '); sql.Add(',Case when isnull(A.DataType,'''')<>'''' then ''(''+A.DataType+'')'' else '''' end as DataTypePrt '); sql.Add(',KHConNo=(select KHConNo from JYOrderCon_Main C where C.MainId=isnull(B.ConMainId,''''))'); SQL.Add(' from CaiGou_SQ A '); sql.Add(' left join Cloth_Main B on A.ConNo=B.ConNo'); sql.add(' where isnull(A.chker,'''')<>'''' and A.SQType=''纱线'''); SQL.Add(' and A.PrtHBNO=''' + Trim(maxno) + ''''); //SQL.Add(' and A.SQID='''+Trim(Order_Main.fieldbyname('SQID').AsString)+''''); Open; end; SCreateCDS20(ADOQueryTemp, CDS_PRT); SInitCDSData20(ADOQueryTemp, CDS_PRT); if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.ShowReport; //RM1.PrintReport; end else begin Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\原料采购单.rmf'), '提示', 0); end; end; procedure TfrmCaiGouSQList.TBEditGQXClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmCaiGouSQInPut := TfrmCaiGouSQInPut.Create(Application); with frmCaiGouSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('SQID').AsString); // frmCaiGouSQInPut.ToolButton3.Visible := False; frmCaiGouSQInPut.ToolButton4.Visible := False; FSQType := Trim(Self.canshu2); {if Self.Caption='纱线采购加工申请高权限' then begin ZFormName:='可修改'; end; } if ShowModal = 1 then begin end; end; finally frmCaiGouSQInPut.Free; end; end; procedure TfrmCaiGouSQList.DataTypeChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmCaiGouSQList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin // if (AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('SQQty').Index]) > 0 then // begin // if (AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('DHBL').Index]) < 0.95 then // ACanvas.Brush.Color := $ADDEFF; // end; end; procedure TfrmCaiGouSQList.btn1Click(Sender: TObject); begin if cxTabControl1.TabIndex <> 1 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Locate('SSel', True, []) = True do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate CaiGou_SQ Set ChkStatus=''已审核'',Chktime=getdate(),Chker=''' + Trim(DName) + ''''); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; Order_Main.Delete; end; end; Order_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!', '提示', 0); end; end; procedure TfrmCaiGouSQList.btn2Click(Sender: TObject); begin if cxTabControl1.TabIndex <> 2 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Locate('SSel', True, []) = True do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate CaiGou_SQ Set ChkStatus='''',Chktime=NULL,Chker='''''); sql.Add(' where SQID=''' + Trim(Order_Main.fieldbyname('SQID').AsString) + ''''); ExecSQL; end; Order_Main.Delete; end; end; Order_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!', '提示', 0); end; end; end.