unit U_RKSMEdit; interface uses Windows, Messages, strutils,SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, StdCtrls, cxContainer, cxTextEdit, cxCurrencyEdit, BtnEdit, ExtCtrls, ComCtrls, ToolWin, DBClient, ADODB, MovePanel,MMSystem, cxCheckBox; type TfrmRKSMEdit = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; Panel1: TPanel; PHYG: TBtnEditA; defstr2: TComboBox; Label16: TLabel; Label15: TLabel; packNo: TcxCurrencyEdit; Label14: TLabel; Label1: TLabel; Panel2: TPanel; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ADOQueryMain: TADOQuery; ADOQueryCmd: TADOQuery; CDSMJID: TClientDataSet; DataSource2: TDataSource; SmNO: TEdit; ADOQueryTmp: TADOQuery; V2Column1: TcxGridDBColumn; kcKw: TBtnEditA; Label5: TLabel; MovePanel1: TMovePanel; Edit2: TEdit; Button4: TButton; Label2: TLabel; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; cxStyle_gridRow: TcxStyle; cxStyle_gridFoot: TcxStyle; cxStyle_gridHead: TcxStyle; cxStyle_gridGroupBox: TcxStyle; cxStyle_yellow: TcxStyle; cxStyle_Red: TcxStyle; cxStyle_fontBlack: TcxStyle; cxStyle_fontclFuchsia: TcxStyle; cxStyle_fontclPurple: TcxStyle; cxStyle_fontclGreen: TcxStyle; cxStyle_fontclBlue: TcxStyle; cxStyle_fontclTeal: TcxStyle; cxStyle_fontclOlive: TcxStyle; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column4: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column16: TcxGridDBColumn; v1Column15: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; ADOQuery1: TADOQuery; DataSource1: TDataSource; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridLevel2: TcxGridLevel; Tv3Column1: TcxGridDBColumn; ADOQueryTm: TADOQuery; DSTm: TDataSource; ToolButton1: TToolButton; V2Column2: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SmNOKeyPress(Sender: TObject; var Key: Char); procedure FormShow(Sender: TObject); procedure TV2CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure kcKwBtnClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); private procedure InitGrid(); procedure InitMJID(); function SaveRK():Boolean; Procedure QueryRk(); Procedure QueryTM(); Procedure InitKw(); { Private declarations } public fckName:string; { Public declarations } end; var frmRKSMEdit: TfrmRKSMEdit; implementation uses U_DataLink,U_Fun, U_UserHelp, U_ZDYHelp, U_CPKWListSel; {$R *.dfm} Procedure TfrmRKSMEdit.InitKw(); begin with ADOQueryTmp do begin close; sql.Clear; sql.Add('SELECT * from KH_Zdy_Attachment where ATID='''+Trim(smno.Text)+''' and Type=''CPKW'' '); open; end; IF not ADOQueryTmp.IsEmpty then begin kcKw.Text:= ADOQueryTmp.fieldbyName('zdyCode').AsString; end else begin IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\库位错误.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\库位错误.wav'),0, SND_ASYNC); end; end; Procedure TfrmRKSMEdit.QueryTm(); begin with ADOQueryTM do begin close; sql.Clear; sql.Add('select TOP 50 MJID'); sql.Add('from WFB_MJJY A '); SQL.Add('WHERE exists(select MJID from WFB_MJJY X where X.APID=A.APID and X.MJID='+quotedstr(trim(smNO.Text))); sql.Add(') and A.mjstr2=''未入库'' '); sql.Add('and A.CKname='''+trim(fckName)+''''); open; end; end; Procedure TfrmRKSMEdit.QueryRk(); begin with ADOQuery1 do begin close; sql.Clear; sql.Add('select A.*,hC_ps=A.AordQty2,JY_ps=(select count(MainID) from WFB_MJJY X where X.APID=A.APID),'); sql.Add('JY_Qty=(select sum(MJLen) from WFB_MJJY X where X.APID=A.APID), '); sql.Add('RK_RollNum=(select sum(RollNum) from CK_BanCP_CR X where X.APID=A.APID and X.CRType=''检验入库''),'); sql.Add('RK_Qty=(select sum(Qty) from CK_BanCP_CR X where X.APID=A.APID and X.CRType=''检验入库'') '); sql.Add('from JYOrder_sub_anPai A '); SQL.Add('WHERE exists(select MJID from WFB_MJJY X where X.APID=A.APID and X.MJID='+quotedstr(trim(smNO.Text))); sql.Add(')'); sql.Add('and A.CKname='''+trim(fckName)+''''); open; end; end; function TfrmRKSMEdit.SaveRK():Boolean; var maxno:String; CRID:Integer; MaxCkNo,MaxCkSubNo:String; MhcTime:TdateTime; begin Result:=false; ADOQueryCmd.Connection.BeginTrans; try with ADOQueryTmp do begin Close; sql.Clear; SQL.add('Update CK_BanCP_CRID Set CRID=CRID+1'); sql.Add('select * from CK_BanCP_CRID'); Open; end; CRID:=ADOQueryTmp.fieldbyname('CRID').AsInteger; if GetLSNo(ADOQueryTmp,MaxCkNo,'JR','CK_BanCP_CR',5,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取成品仓库最大号失败!','提示',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from CK_BanCP_CR where 1=2'); Open; end; { with ADOQueryTmp do begin close; sql.Clear; sql.Add('select * from JYOrder_Sub_AnPai '); sql.Add(' where APID='+quotedstr(trim(ADOQueryMain.fieldbyname('APID').AsString))); open; IF not ADOQueryTmp.IsEmpty then begin mhcTime:=ADOQueryTmp.fieldbyname('ADefDate1').AsDateTime; end else begin mhcTime:=date(); end; end; } mhcTime:=SGetServerDateTime(ADOQueryTmp); with ADOQueryCmd do begin Append; FieldByName('MainId').Value:=Trim(ADOQueryMain.fieldbyname('MainId').AsString); FieldByName('SubId').Value:=Trim(ADOQueryMain.fieldbyname('SubId').AsString); FieldByName('C_Code').Value:=Trim(ADOQueryMain.fieldbyname('C_Code').AsString); FieldByName('C_CodeName').Value:=Trim(ADOQueryMain.fieldbyname('C_CodeName').AsString); FieldByName('C_SPec').Value:=Trim(ADOQueryMain.fieldbyname('C_SPec').AsString); FieldByName('C_Color').Value:=Trim(ADOQueryMain.fieldbyname('C_Color').AsString); FieldByName('APID').Value:=Trim(ADOQueryMain.fieldbyname('APID').AsString); FieldByName('MJID').Value:=Trim(ADOQueryMain.fieldbyname('MJId').AsString); FieldByName('mjxh').Value:=Trim(ADOQueryMain.fieldbyname('mjxh').AsString); FieldByName('BCGangNO').Value:=Trim(ADOQueryMain.fieldbyname('BCGangNO').AsString); FieldByName('RCGangNO').Value:=Trim(ADOQueryMain.fieldbyname('RCGangNO').AsString); FieldByName('batchNo').Value:=Trim(ADOQueryMain.fieldbyname('batchNo').AsString); FieldByName('BCFK').Value:=ADOQueryMain.fieldbyname('MJFK').AsFloat; FieldByName('BCKZ').Value:=ADOQueryMain.fieldbyname('MJSJKZ').AsFloat; FieldByName('BCID').Value:=Trim(MaxCkNo); FieldByName('CRTime').Value:=FormatDateTime('yyyy-MM-dd',mhcTime); FieldByName('ckname').Value:=trim(fckname); FieldByName('CRFlag').Value:='入库'; FieldByName('CRType').Value:='检验入库'; FieldByName('CRID').Value:=CRID; FieldByName('KGQty').Value:=0; FieldByName('Qty').Value:=ADOQueryMain.fieldbyname('MJLen').Value; FieldByName('RollNum').Value:=1; FieldByName('QtyUnit').Value:=ADOQueryMain.fieldbyname('MJTypeOther').Value; FieldByName('CPType').Value:=ADOQueryMain.fieldbyname('MJType').Value; FieldByName('Note').Value:=ADOQueryMain.fieldbyname('Note').Value; FieldByName('Filler').Value:=Trim(DName); FieldByName('FillTime').Value:=SGetServerDateTime(ADOQueryTmp); FieldByName('kcKw').Value:=Trim(kcKw.Text); // fieldbyname('kcKw').Value:=GetKw(ADOQueryTmp,ADOQueryMain.fieldbyname('C_CodeName').AsString,ADOQueryMain.fieldbyname('C_Color').AsString); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from CK_BanCP_KC where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value:=CRID; FieldByName('BCID').Value:=Trim(MaxCkNo); FieldByName('CRTime').Value:=FormatDateTime('yyyy-MM-dd',mhcTime); FieldByName('CRType').Value:='检验入库'; FieldByName('ckname').Value:=trim(fckname); FieldByName('CPType').Value:=ADOQueryMain.fieldbyname('MJType').Value; FieldByName('C_Code').Value:=Trim(ADOQueryMain.fieldbyname('C_Code').AsString); FieldByName('C_CodeName').Value:=Trim(ADOQueryMain.fieldbyname('C_CodeName').AsString); FieldByName('C_SPec').Value:=Trim(ADOQueryMain.fieldbyname('C_SPec').AsString); FieldByName('C_Color').Value:=Trim(ADOQueryMain.fieldbyname('C_Color').AsString); FieldByName('BCGangNO').Value:=Trim(ADOQueryMain.fieldbyname('BCGangNO').AsString); FieldByName('RCGangNO').Value:=Trim(ADOQueryMain.fieldbyname('RCGangNO').AsString); FieldByName('batchNo').Value:=Trim(ADOQueryMain.fieldbyname('batchNo').AsString); FieldByName('MJID').Value:=Trim(ADOQueryMain.fieldbyname('MJID').AsString); FieldByName('KCKGQty').Value:=0; FieldByName('KCQty').Value:=ADOQueryMain.fieldbyname('MJlen').Value; FieldByName('KCRollNum').Value:=1; FieldByName('KCQtyUnit').Value:=ADOQueryMain.fieldbyname('MJTypeOther').Value; FieldByName('mjxh').Value:=Trim(ADOQueryMain.fieldbyname('mjxh').AsString); FieldByName('KCNote').Value:=ADOQueryMain.fieldbyname('Note').Value; FieldByName('kcKw').Value:=Trim(kcKw.Text); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update WFB_MJJY Set MJStr2=''已入库'' where MJID='''+Trim(ADOQueryMain.fieldbyname('MJID').AsString)+''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Result:=true; except ADOQueryCmd.Connection.RollbackTrans; end; end; procedure TfrmRKSMEdit.InitGrid(); begin with ADOQueryMain do begin Close; sql.Clear; SQL.Add('select A.* from CK_BanCP_CR A '); SQL.Add('where 1=2 '); Open; end; SCreateCDS20(ADOQueryMain,CDSMJID); SInitCDSData20(ADOQueryMain,CDSMJID); end; procedure TfrmRKSMEdit.InitMJID(); begin MovePanel1.Visible:=false; with ADOQueryMain do begin Close; sql.Clear; SQL.Add('select A.* from WFB_MJJY A'); sql.Add('where MJID='+quotedstr(trim(SmNO.Text))); sql.Add('and A.CKname='''+trim(fckName)+''''); Open; if not IsEmpty then begin IF trim(Fieldbyname('MJstr2').AsString)='已入库' then begin CDSMJID.Append; CDSMJID.FieldByName('SDefNote').Value:='此条码已入库'; CDSMJID.FieldByName('MJID').Value:=trim(SmNO.Text); CDSMJID.Post; IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\此条码已入库.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\此条码已入库.wav'),0, SND_ASYNC); end else begin IF saveRk() then begin CDSMJID.Append; CDSMJID.FieldByName('SDefNote').Value:='入库成功'; CDSMJID.FieldByName('MJID').Value:=trim(ADOQueryMain.Fieldbyname('MJID').AsString); // CDSMJID.FieldByName('CRID').Value:=trim(ADOQueryMain.Fieldbyname('CRID').AsString); CDSMJID.FieldByName('C_CodeName').Value:=trim(ADOQueryMain.Fieldbyname('C_CodeName').AsString); CDSMJID.FieldByName('C_Color').Value:=trim(ADOQueryMain.Fieldbyname('C_Color').AsString); CDSMJID.FieldByName('CPType').Value:=trim(ADOQueryMain.Fieldbyname('MJType').AsString); CDSMJID.FieldByName('RollNum').Value:=1; CDSMJID.FieldByName('Qty').Value:=ADOQueryMain.Fieldbyname('MJLen').AsFloat; CDSMJID.FieldByName('QtyUnit').Value:=trim(ADOQueryMain.Fieldbyname('MJTypeOther').AsString); CDSMJID.FieldByName('mainID').Value:=trim(ADOQueryMain.Fieldbyname('mainID').AsString); CDSMJID.FieldByName('subID').Value:=trim(ADOQueryMain.Fieldbyname('subID').AsString); CDSMJID.FieldByName('RCGangNO').Value:=trim(ADOQueryMain.Fieldbyname('RCGangNO').AsString); CDSMJID.FieldByName('BCgangNO').Value:=trim(ADOQueryMain.Fieldbyname('BCgangNO').AsString); CDSMJID.FieldByName('BCFK').Value:=ADOQueryMain.Fieldbyname('MJFK').AsFloat; CDSMJID.FieldByName('BCKZ').Value:=ADOQueryMain.Fieldbyname('MJSJKZ').AsFloat; CDSMJID.Post; QueryRk(); QueryTm(); IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\正确.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\正确.wav'),0, SND_ASYNC); end else begin CDSMJID.Append; CDSMJID.FieldByName('SDefNote').Value:='此条码入库失败'; CDSMJID.FieldByName('MJID').Value:=trim(SmNO.Text); CDSMJID.Post; IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\入库失败.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\入库失败.wav'),0, SND_ASYNC); end; end; end else IF leftstr(uppercase(trim(SmNO.Text)),1)='T' then begin CDSMJID.Append; CDSMJID.FieldByName('SDefNote').Value:='此条码已入库'; CDSMJID.FieldByName('MJID').Value:=trim(SmNO.Text); CDSMJID.Post; IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\此条码已入库.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\此条码已入库.wav'),0, SND_ASYNC); end else begin CDSMJID.Append; CDSMJID.FieldByName('SDefNote').Value:='此条码不存在'; CDSMJID.FieldByName('MJID').Value:=trim(SmNO.Text); CDSMJID.Post; IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\扫描错误.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\扫描错误.wav'),0, SND_ASYNC); end; end; IF trim(CDSMJID.FieldByName('SDefNote').AsString)<>'入库成功' then begin MovePanel1.Visible:=true; Edit2.Text:=SmNO.Text; Label2.Caption:=trim(CDSMJID.FieldByName('SDefNote').AsString); end; end; procedure TfrmRKSMEdit.FormDestroy(Sender: TObject); begin frmRKSMEdit:=nil; end; procedure TfrmRKSMEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin writeCxGrid(self.Caption+tv1.Name,Tv1,'成品仓库'); writeCxGrid(self.Caption+Tv2.Name,Tv2,'成品仓库'); writeCxGrid(self.Caption+Tv3.Name,Tv3,'成品仓库'); Action:=cahide; end; procedure TfrmRKSMEdit.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmRKSMEdit.FormCreate(Sender: TObject); begin Panel2.Align:=alClient; readCxGrid(self.Caption+tv1.Name,Tv1,'成品仓库'); readCxGrid(self.Caption+Tv2.Name,Tv2,'成品仓库'); readCxGrid(self.Caption+Tv3.Name,Tv3,'成品仓库'); end; procedure TfrmRKSMEdit.SmNOKeyPress(Sender: TObject; var Key: Char); begin IF key=#13 then begin if trim(smno.Text)='' then exit; IF uppercase(leftstr(trim(smno.Text),2))='KW' then begin initkw(); end else begin IF trim(kcKw.Text)='' then begin IF FileExists(PChar(ExtractFilePath(Application.ExeName)+'wav\库位不能为空.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName)+'wav\库位不能为空.wav'),0, SND_ASYNC); smno.Text:=''; smno.SetFocus; exit; end; initMJID(); end; smno.Text:=''; smno.SetFocus; end; end; procedure TfrmRKSMEdit.FormShow(Sender: TObject); begin MovePanel1.Left:=(Width-MovePanel1.Width) div 2; MovePanel1.top:=(Height-MovePanel1.Height-200) div 2; InitGrid(); end; procedure TfrmRKSMEdit.TV2CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var i:integer; begin i:=tv2.GetColumnByFieldName('SDefNote').Index; if (AViewInfo.GridRecord.Values[i]<>'入库成功') then ACanvas.Brush.Color:=clred; end; procedure TfrmRKSMEdit.kcKwBtnClick(Sender: TObject); begin try frmCPKWListSel:=TfrmCPKWListSel.Create(Application); with frmCPKWListSel do begin if ShowModal=1 then begin kcKw.Text:=Trim(CDS_HZ.fieldbyname('ZdyCode').AsString); end; end; finally frmCPKWListSel.Free; end; end; procedure TfrmRKSMEdit.Button4Click(Sender: TObject); begin MovePanel1.Visible:=False; SmNO.SetFocus; end; procedure TfrmRKSMEdit.ToolButton1Click(Sender: TObject); begin if CDSMJID.IsEmpty then Exit; if CDSMJID.Locate('SSel',True,[])=False then begin Application.MessageBox('没有选择数据!','提示',0); Exit; end; if Application.MessageBox('确定要执行操作吗?','提示',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with CDSMJID do begin while Locate('SSel',True,[]) do begin with ADOQueryTmp do begin Close; sql.Clear; sql.Add('select CRID from CK_BanCP_PH where MJID='+Trim(CDSMJID.fieldbyname('MJID').AsString)); Open; end; if not ADOQueryTmp.IsEmpty then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('已配货不能撤销入库!','提示',0); Exit; end; with ADOQueryTmp do begin Close; sql.Clear; sql.Add('select CRID from CK_BanCP_CR where MJID='+Trim(CDSMJID.fieldbyname('MJID').AsString)); Open; end; if ADOQueryTmp.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('已出库不能撤销入库!','提示',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete CK_BanCP_CR where MJID='''+Trim(CDSMJID.fieldbyname('MJID').AsString)+''''); sql.Add('delete CK_BanCP_KC where MJID='+Trim(CDSMJID.fieldbyname('MJID').AsString)); sql.Add('Update WFB_MJJY Set MJStr2=''未入库'' where MJID='''+Trim(CDSMJID.fieldbyname('MJID').AsString)+'''');; ExecSQL; end; CDSMJID.Delete; end; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('撤销失败!','提示',0); end; end; end.