unit U_EquipmentCk; interface uses Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, MMSystem, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, StdCtrls, ComCtrls, ExtCtrls, ToolWin, cxButtonEdit, cxDropDownEdit, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, BtnEdit, cxContainer, cxTextEdit, cxCurrencyEdit, cxCheckBox, Menus, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxCalendar; type TfrmEquipment = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; Panel3: TPanel; ADOQueryMain: TADOQuery; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Qty: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; v1Column4: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; ToolButton3: TToolButton; ToolButton4: TToolButton; v1Column1: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure TBCloseClick(Sender: TObject); procedure v1QtyPropertiesEditValueChanged(Sender: TObject); procedure FHAddressBtnDnClick(Sender: TObject); procedure v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ToolButton3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); private procedure InitGrid(); function savedate(): Boolean; function CheckData(): Boolean; { Private declarations } public fkeyNO: string; FType: integer; fCKName: string; { Public declarations } end; var frmEquipment: TfrmEquipment; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_EquipmentkCList, U_ZdyAttachment, U_ZDYHelpSel, U_ClothSCHZListSel, U_ZdyAttachGYS; {$R *.dfm} function TfrmEquipment.CheckData(): Boolean; begin try if cds_main.Locate('CRType', '', []) then raise Exception.Create('出库类型不能为空!'); if cds_main.Locate('CRType', NULL, []) then raise Exception.Create('出库类型不能为空!'); if cds_main.Locate('CRType', '', []) then raise Exception.Create('出库类型不能为空!'); if cds_main.Locate('CRType', NULL, []) then raise Exception.Create('出库类型不能为空!'); if cds_main.Locate('ToFactoryName', NULL, []) then raise Exception.Create('出到工厂不能为空!'); if cds_main.Locate('ToFactoryName', '', []) then raise Exception.Create('出到工厂不能为空!'); if cds_main.Locate('Rollnum', NULL, []) then raise Exception.Create('数量不能为空!'); if cds_main.Locate('Rollnum', 0, []) then raise Exception.Create('数量不能为0!'); Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; function TfrmEquipment.savedate(): Boolean; var MaxNo: string; begin result := false; try ADOQueryCmd.Connection.BeginTrans; CDS_Main.DisableControls; CDS_Main.First; with CDS_Main do begin while not eof do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_Equipment_CR'); sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); open; end; if ADOQueryCmd.IsEmpty then begin if GetLSNo(ADOQueryTmp, MaxNo, 'WC', 'CK_Equipment_CR', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('Filler').Value := trim(DName); ADOQueryCmd.FieldByName('FillTime').Value := dateTimetostr(SGetServerDateTime(adoqueryTmp)); end else begin MaxNo := Trim(CDS_Main.FieldByName('CRNO').AsString); ADOQueryCmd.Edit; ADOQueryCmd.FieldByName('editer').Value := trim(dName); ADOQueryCmd.FieldByName('editTime').Value := SGetServerDateTime(adoqueryTmp); end; ADOQueryCmd.FieldByName('InoutNo').Value := trim(MaxNo); ADOQueryCmd.FieldByName('CRNO').Value := trim(MaxNo); ADOQueryCmd.FieldByName('CKName').Value := '设备'; ADOQueryCmd.FieldByName('CRFlag').Value := '出库'; ADOQueryCmd.FieldByName('CRQtyFlag').Value := -1; //保存明细 RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Main, 'CK_Equipment_CR', 0); //保存隐藏ID ADOQueryCmd.FieldByName('qty').Value := 0; ADOQueryCmd.FieldByName('FromOrderNo').Value := trim(fieldbyname('FromOrderNo').AsString); ADOQueryCmd.FieldByName('FrommainID').Value := trim(fieldbyname('FrommainID').AsString); ADOQueryCmd.FieldByName('FromsubID').Value := trim(fieldbyname('FromsubID').AsString); ADOQueryCmd.FieldByName('TomainID').Value := trim(fieldbyname('TomainID').AsString); ADOQueryCmd.FieldByName('TosubID').Value := trim(fieldbyname('TosubID').AsString); ADOQueryCmd.Post; //更新库存 with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('exec P_Up_Equipment ' + quotedstr(trim(MaxNo))); Open; end; if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then begin CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('入库数量少于出库数量!', '提示', 0); Exit; end; Edit; FieldByName('InoutNo').Value := trim(MaxNo); FieldByName('CRNO').Value := trim(MaxNo); post; next; end; end; CDS_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; result := true; except CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; end; end; procedure TfrmEquipment.InitGrid(); begin try with adoqueryMain do begin close; sql.Clear; sql.Add('select A.* from CK_WarpRoller_CR A'); sql.Add('where A.CRNO=' + quotedstr(trim(fkeyNO))); open; end; SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); if not CDS_Main.IsEmpty then begin end; finally end; end; procedure TfrmEquipment.FormDestroy(Sender: TObject); begin frmEquipment := nil; end; procedure TfrmEquipment.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cahide; end; procedure TfrmEquipment.FormShow(Sender: TObject); var fbhType, fInoutNo: string; begin readCxGrid(self.Caption, Tv1, '仓储管理'); InitGrid(); end; procedure TfrmEquipment.TBSaveClick(Sender: TObject); begin if cds_main.IsEmpty then exit; if CheckData() = false then exit; if savedate() then begin application.MessageBox('数据保存成功!', '提示信息'); end else begin application.MessageBox('数据保存失败!', '提示信息', MB_ICONERROR); end; end; procedure TfrmEquipment.v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'Cloth'; flagname := '坯布名称'; if ShowModal = 1 then begin Self.CDS_Main.Edit; Self.CDS_Main.FieldByName('P_CodeName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); Self.CDS_Main.FieldByName('P_Code').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmEquipment.TBCloseClick(Sender: TObject); begin writeCxGrid(self.Caption, Tv1, '仓储管理'); close; end; procedure TfrmEquipment.v1QtyPropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_Main do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); FieldbyName('Money').Value := format('%.2f', [FieldByName('Qty').AsFloat * FieldByName('Price').AsFloat]); Post; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmEquipment.FHAddressBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmEquipment.v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin frmClothSCHZListSel := TfrmClothSCHZListSel.Create(Application); with frmClothSCHZListSel do begin if showmodal = 1 then begin CDS_Main.Edit; CDS_Main.fieldbyname('ToOrderNo').Value := trim(Order_Main.fieldbyname('OrderNo').AsString); CDS_Main.fieldbyname('ToMainID').Value := trim(Order_Main.fieldbyname('MainID').AsString); CDS_Main.fieldbyname('TosubID').Value := trim(Order_Main.fieldbyname('subID').AsString); CDS_Main.Post; end; free; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmEquipment.v1Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'MLType'; flagname := '面料类型'; if ShowModal = 1 then begin CDS_Main.Edit; CDS_Main.FieldByName('P_Type').Value := Trim(ClientDataSet1.fieldbyname('zdyName').AsString); CDS_Main.Post; end; end; finally frmZDYHelp.Free; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmEquipment.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmEquipment.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmEquipment.v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application); with frmZdyAttachGYS do begin if ShowModal = 1 then begin CDS_Main.Edit; CDS_Main.fieldbyname('ToFactoryName').Value := Trim(CDS_HZ.fieldbyname('CoName').AsString); CDS_Main.Post; end; end; finally frmZdyAttachGYS.Free; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmEquipment.ToolButton3Click(Sender: TObject); var FMJID: string; begin frmEquipmentkCList := TfrmEquipmentkCList.create(self); with frmEquipmentkCList do begin canshu1 := '选择'; if showmodal = 1 then begin cds_main.DisableControls; cds_main.First; while not cds_main.Eof do begin if (cds_main.fieldbyname('ssel').AsBoolean) and (not self.cds_main.Locate('FactoryName', trim(cds_main.fieldbyname('FactoryName').AsString), [])) then begin self.cds_main.Append; self.cds_main.fieldbyname('FactoryName').Value := trim(cds_main.fieldbyname('FactoryName').AsString); self.cds_main.fieldbyname('P_CodeName').Value := trim(cds_main.fieldbyname('P_CodeName').AsString); self.cds_main.FieldByName('RollNum').Value := cds_main.fieldbyname('KCPS').AsFloat; self.cds_main.Post; end; cds_main.Next; end; cds_main.EnableControls; end; free; end; end; procedure TfrmEquipment.ToolButton4Click(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if Trim(CDS_Main.FieldByName('CRNO').AsString) = '' then begin CDS_Main.Delete; end else begin ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CK_Equipment_CR set Valid=''N'' where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); ExecSQL; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('exec P_Up_Equipment ' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); Open; end; if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then begin CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('出库数量超出库存数量!', '提示', 0); Exit; end; ADOQueryCmd.Connection.CommitTrans; CDS_Main.Delete; end; end; end.