unit U_TradeClothOutList; 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, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, Menus, cxCalendar, MovePanel, Math, Clipbrd, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxTextEdit, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, U_BaseList, cxPC, System.StrUtils, cxContainer, dxCore, cxDateUtils, cxMaskEdit, dxSkinWXI, dxScrollbarAnnotations, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, FrameDateSel, FramePagingSel; type TfrmTradeClothOutList = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExport: TToolButton; TBClose: TToolButton; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DS_1: TDataSource; GPM_1: TcxGridPopupMenu; CDS_1: TClientDataSet; TBRKCX: TToolButton; ToolButton2: TToolButton; ToolButton4: TToolButton; PM_1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ToolButton1: TToolButton; N3: TMenuItem; cxPageControl1: TcxPageControl; cxTabSheet1: TcxTabSheet; cxTabSheet2: TcxTabSheet; Pnl_F1: TPanel; Label3: TLabel; Label7: TLabel; Label10: TLabel; Label5: TLabel; Label20: TLabel; Label23: TLabel; Label6: TLabel; Label4: TLabel; Label8: TLabel; begtime: TDateTimePicker; endTime: TDateTimePicker; OrderNo: TcxTextEdit; conNO: TcxTextEdit; STKID: TcxTextEdit; C_Name: TcxTextEdit; C_Color: TcxTextEdit; C_Pattern: TcxTextEdit; C_Code: TcxTextEdit; BatchNo: TcxTextEdit; CustName: TcxTextEdit; IONO: TcxTextEdit; Pnl_F2: TPanel; Label11: TLabel; Label12: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label18: TLabel; Label19: TLabel; Label21: TLabel; DateTimePicker3: TDateTimePicker; DateTimePicker4: TDateTimePicker; Edit1: TcxTextEdit; Edit2: TcxTextEdit; Edit4: TcxTextEdit; Edit5: TcxTextEdit; Edit6: TcxTextEdit; Edit7: TcxTextEdit; Edit9: TcxTextEdit; Edit10: TcxTextEdit; Edit11: TcxTextEdit; GPM_2: TcxGridPopupMenu; CDS_2: TClientDataSet; DS_2: TDataSource; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; cxGridDBColumn9: TcxGridDBColumn; cxGridDBColumn10: TcxGridDBColumn; cxGridDBColumn11: TcxGridDBColumn; cxGridDBColumn12: TcxGridDBColumn; cxGridDBColumn13: TcxGridDBColumn; cxGridDBColumn14: TcxGridDBColumn; cxGridDBColumn15: TcxGridDBColumn; cxGridDBColumn16: TcxGridDBColumn; v1Column46: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; TV2Column3: TcxGridDBColumn; TV2Column5: TcxGridDBColumn; PM_2: TPopupMenu; MenuItem3: TMenuItem; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column22: TcxGridDBColumn; v1Column21: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; v1Column32: TcxGridDBColumn; v1Column1: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column23: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column27: TcxGridDBColumn; v1Column28: TcxGridDBColumn; v1Column10: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; v1Column12: TcxGridDBColumn; v1Column42: TcxGridDBColumn; v1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column40: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; VC_BaoID: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; TV2Column4: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Tv1Column14: TcxGridDBColumn; Tv1Column15: TcxGridDBColumn; frmFrameDateSel1: TfrmFrameDateSel; frmFramePagingSel1: TfrmFramePagingSel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure orderNoKeyPress(Sender: TObject; var Key: Char); procedure TBRKCXClick(Sender: TObject); procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure JYTypeChange(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure CDS_1BeforeOpen(DataSet: TDataSet); procedure Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string); procedure Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); procedure ToolButton4Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure TV2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure MenuItem3Click(Sender: TObject); procedure cxButton3Click(Sender: TObject); procedure BTLPClick(Sender: TObject); procedure frmFramePagingSel1TCBNORPropertiesChange(Sender: TObject); private CurrentPage, RecordsNumber: Integer; lstCust: TStringList; procedure InitGrid(WSql: string); procedure InitPage(); procedure SetStatus(); { Private declarations } public canshu1, canshu2, FWorkshop: string; { Public declarations } end; implementation uses U_DataLink, U_RTFun, U_LabelPrint; {$R *.dfm} procedure TfrmTradeClothOutList.InitPage(); begin CurrentPage := 1; case cxPageControl1.ActivePageIndex of 0: begin InitGrid(SGetHintFilters(Pnl_F2, 1, 2)); end; 1: begin InitGrid(SGetHintFilters(Pnl_F1, 1, 2)); end; end; end; procedure TfrmTradeClothOutList.SetStatus(); begin TBRKCX.Enabled := False; // ToolButton1.Enabled := False; case cxPageControl1.ActivePageIndex of 0: begin end; 1: begin // ToolButton1.Enabled := true; if canshu1 = '管理' then TBRKCX.Enabled := true; end; end; end; procedure TfrmTradeClothOutList.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; FreeAndNil(lstCust); Action := caFree; end; procedure TfrmTradeClothOutList.FormCreate(Sender: TObject); begin inherited; lstCust := TStringList.Create; frmFrameDateSel1.EndDate.Date := SGetServerDateTime(ADOQueryTemp); frmFrameDateSel1.BegDate.Date := frmFrameDateSel1.EndDate.Date - 20; FWorkshop := trim(Self.fParameters3); end; procedure TfrmTradeClothOutList.InitGrid(WSql: string); var SqlStr: string; begin case cxPageControl1.ActivePageIndex of 0: begin SqlStr := ' select IOTime=CONVERT(VARCHAR(10),IOTime,120),OrderNo,C_Name,PCId,IOType,Grade,CustName,C_Width,C_GramWeight,CIMachNo,Workshop,BatchNo,IOPosition,C_Color,IONO,C_Pattern'; SqlStr := SqlStr + ' ,COUNT(PieceNo) SumPieceNo,sum(GrossWeight) SumGrossWeight,sum(Tare) SumTare,sum(NetWeight) SumNetWeight'; SqlStr := SqlStr + ' ,Sum(Meter) SumMeter,Sum(Yardage) SumYardage'; SqlStr := SqlStr + ' from V_Trade_Cloth_IO A where IOFlag=''出库'' '; if trim(WSql) <> '' then SqlStr := SqlStr + ' and ' + WSql; if trim(FWorkshop) <> '' then SqlStr := SqlStr + ' and Workshop=''' + trim(FWorkshop) + ''' '; SqlStr := SqlStr + ' GROUP BY CONVERT(VARCHAR(10),IOTime,120),OrderNo,C_Name,PCId,IOType,Grade,CustName,C_Width,C_GramWeight,CIMachNo,Workshop,BatchNo,IOPosition,C_Color,IONO,C_Pattern'; InitCDSData(ADOQueryMain, CDS_2, Tv2, SqlStr, '', ''); end; 1: begin SqlStr := ' select top ' + inttostr(RecordsNumber) + ' * '; SqlStr := SqlStr + ' from '; SqlStr := SqlStr + '(select rownumber=cast((row_number() over(order by A.IOTime desc)) as int)'; SqlStr := SqlStr + ',COUNT(1) OVER() AS TotalCount'; SqlStr := SqlStr + ',* from V_Trade_Cloth_IO A where A.IOFlag = ''出库'' '; if trim(FWorkshop) <> '' then SqlStr := SqlStr + ' and Workshop=''' + trim(FWorkshop) + ''' '; if trim(WSql) <> '' then SqlStr := SqlStr + 'and ' + WSql; SqlStr := SqlStr + ') temp_row'; SqlStr := SqlStr + ' where rownumber> ' + inttostr(((CurrentPage - 1) * RecordsNumber)); SqlStr := SqlStr + ' order by rownumber'; InitCDSData(ADOQueryMain, CDS_1, Tv1, SqlStr, '', 'stkid'); frmFramePagingSel1.LBDQY.Caption := inttostr(CurrentPage); frmFramePagingSel1.LBZYS.Caption := inttostr(ceil(CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber)); end; end; end; procedure TfrmTradeClothOutList.TBRafreshClick(Sender: TObject); begin InitPage(); end; procedure TfrmTradeClothOutList.BTLPClick(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(SGetHintFilters(Pnl_F1, 1, 2)); end; procedure TfrmTradeClothOutList.CDS_1BeforeOpen(DataSet: TDataSet); begin lstCust.Clear; end; procedure TfrmTradeClothOutList.cxButton3Click(Sender: TObject); begin if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(SGetHintFilters(Pnl_F1, 1, 2)); end; procedure TfrmTradeClothOutList.cxPageControl1Change(Sender: TObject); begin SetStatus(); end; procedure TfrmTradeClothOutList.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmTradeClothOutList.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '贸易成品仓库'); ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '贸易成品仓库'); CurrentPage := 1; RecordsNumber := 500; canshu1 := self.fParameters1; canshu2 := self.fParameters3; FWorkshop := self.fParameters3; SetStatus(); InitPage(); end; procedure TfrmTradeClothOutList.frmFramePagingSel1TCBNORPropertiesChange(Sender: TObject); begin RecordsNumber := StrToInt(frmFramePagingSel1.TCBNOR.Text); CurrentPage := 1; InitGrid(SGetHintFilters(Pnl_F1, 1, 2)); end; procedure TfrmTradeClothOutList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; TcxGridToExcel(Self.Caption, cxGrid1); end; procedure TfrmTradeClothOutList.orderNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitPage(); end; end; procedure TfrmTradeClothOutList.TBRKCXClick(Sender: TObject); var MIOIDS, MStkIds, MOutNos, MPCIDS: string; begin if CDS_1.IsEmpty then Exit; if not CDS_1.Locate('SSel', True, []) then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; MIOIDS := ''; MStkIds := ''; MOutNos := ''; MPCIDS := ''; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin MIOIDS := MIOIDS + (Trim(CDS_1.fieldbyname('IOID').AsString)) + ','; MStkIds := MStkIds + (Trim(CDS_1.fieldbyname('STKID').AsString)) + ','; MOutNos := MOutNos + (Trim(CDS_1.fieldbyname('IONO').AsString)) + ','; MPCIDS := MPCIDS + (Trim(CDS_1.fieldbyname('PCID').AsString)) + ','; end; Next; end; end; MIOIDS := leftBstr(trim(MIOIDS), length(MIOIDS) - 1); MStkIds := leftBstr(trim(MStkIds), length(MStkIds) - 1); MOutNos := leftBstr(trim(MOutNos), length(MOutNos) - 1); CDS_1.Locate('SSel', True, []); CDS_1.EnableControls; if Application.MessageBox('确定要执行操作吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into Trade_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) '); sql.Add('values(''贸易成品出库'' '); sql.Add(',' + quotedstr(MPCIDS)); sql.Add(',''撤销出库'' '); sql.Add(',' + quotedstr(DName)); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(MStkIds)); sql.Add(') '); execsql; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) '); sql.Add('values(''贸易成品出库'' '); sql.Add(',' + quotedstr(MOutNos)); sql.Add(',''撤销出库'' '); sql.Add(',' + quotedstr(DName)); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(MStkIds)); sql.Add(') '); execsql; end; with ADOQueryCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_ReOut '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOIDS=' + quotedstr(trim(MIOIDS))); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); // ShowMessage(SQL.Text); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; InitPage(); except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeClothOutList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin // Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmTradeClothOutList.Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string); begin lstCust.Clear; end; procedure TfrmTradeClothOutList.Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); begin if lstCust <> nil then AText := IntToStr(lstCust.Count); end; procedure TfrmTradeClothOutList.TV2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin cxPageControl1.ActivePageIndex := 1; SetStatus(); InitGrid(SGetCDSFilters(Tv2, CDS_2)); end; procedure TfrmTradeClothOutList.JYTypeChange(Sender: TObject); begin InitPage(); end; procedure TfrmTradeClothOutList.MenuItem3Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_2.fieldbyname(TV2.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmTradeClothOutList.N1Click(Sender: TObject); begin SelOKNo(CDS_1, true); end; procedure TfrmTradeClothOutList.N2Click(Sender: TObject); begin SelOKNo(CDS_1, false); end; procedure TfrmTradeClothOutList.N3Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmTradeClothOutList.ToolButton1Click(Sender: TObject); begin try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'TradeClothOut1'; case cxPageControl1.ActivePageIndex of 0: begin if not CDS_2.IsEmpty then FFiltration1 := Trim(self.CDS_2.fieldbyname('IONO').AsString); end; 1: begin if not CDS_1.IsEmpty then FFiltration1 := Trim(self.CDS_1.fieldbyname('IONO').AsString); end; end; if ShowModal = 1 then begin end; end; finally frmLabelPrint.Free; end; end; procedure TfrmTradeClothOutList.ToolButton2Click(Sender: TObject); var WSql: string; begin if CDS_1.IsEmpty then Exit; if not CDS_1.Locate('SSel', True, []) then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; WSql := ''; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin if WSql <> '' then begin WSql := WSql + ',' + QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString)); end else begin WSql := QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString)); end; end; Next; end; end; CDS_1.Locate('SSel', True, []); CDS_1.EnableControls; try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'TradeClothOut2'; FFiltration1 := WSql; if ShowModal = 1 then begin end; end; finally frmLabelPrint.Free; end; end; procedure TfrmTradeClothOutList.ToolButton4Click(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '贸易成品仓库'); WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, '贸易成品仓库'); end; end.