unit U_JWLChkOut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, ADODB, DBClient, cxButtonEdit, cxDropDownEdit, cxCalendar, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit; type TfrmJWLChkOut = class(TForm) ToolBar1: TToolBar; BtnSave: TToolButton; BtnExit: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; v1P_ChnName: TcxGridDBColumn; v1ShortName: TcxGridDBColumn; v1Note: TcxGridDBColumn; v1CRQty: TcxGridDBColumn; v1UnitName: TcxGridDBColumn; ToolButton2: TToolButton; ToolButton3: TToolButton; DataSource1: TDataSource; CDS_Sub: TClientDataSet; ADOQueryMain: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; cxGridPopupMenu1: TcxGridPopupMenu; v1Column3: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; v1YCLMoney: TcxGridDBColumn; v1YCLPrice10: TcxGridDBColumn; v1CLName: TcxGridDBColumn; v1SJName: TcxGridDBColumn; v1CLSpec: TcxGridDBColumn; v1CheHao: TcxGridDBColumn; procedure FormCreate(Sender: TObject); procedure BtnExitClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure BtnSaveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure v1P_ChnNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1ShortNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1UnitNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1CRQtyPropertiesEditValueChanged(Sender: TObject); procedure v1CLNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1SJNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private procedure InitGrid(); function SaveData():Boolean; { Private declarations } public FMainID,Canshu1:string; { Public declarations } end; var frmJWLChkOut: TfrmJWLChkOut; implementation uses U_DataLink,U_RTFun,U_ZDYHelp,U_JWLInChkSelList,U_CLManage; {$R *.dfm} procedure TfrmJWLChkOut.FormCreate(Sender: TObject); begin cxGrid1.Align:=alClient; end; procedure TfrmJWLChkOut.BtnExitClick(Sender: TObject); begin Close; WriteCxGrid('X原材料出库1',Tv1,'原材料仓库'); end; procedure TfrmJWLChkOut.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add('select A.*,YCLName10=B.YCLName,YCLSpec10=B.YCLSpec,GYSName10=B.GYSName,CRUnit10=B.CRUnit '); sql.Add(',YCLPrice10=B.YCLPrice,YCLMoney10=B.YCLPrice*A.CRQty'); sql.Add(' from CK_YCLONE_CR A'); sql.Add(' inner join CK_YCLONE_CR B on A.RKID=B.MSID'); SQL.Add(' where A.MSId='''+Trim(FMainID)+''''); Open; end; SCreateCDS20(ADOQueryMain,CDS_Sub); SInitCDSData20(ADOQueryMain,CDS_Sub); finally ADOQueryMain.EnableControls; end; end; procedure TfrmJWLChkOut.ToolButton2Click(Sender: TObject); var FDate:TDateTime; begin FDate:=SGetServerDate(ADOQueryTemp); try frmJWLInChkSelList:=TfrmJWLInChkSelList.Create(Application); with frmJWLInChkSelList do begin if ShowModal=1 then begin with CDS_Main do begin First; while not eof do begin if FieldByName('Ssel').AsBoolean=True then begin with Self.CDS_Sub do begin Append; FieldByName('RKID').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('MSID').AsString); FieldByName('YCLName10').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('YCLName').AsString); FieldByName('YCLSpec10').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('YCLSpec').AsString); FieldByName('GYSName10').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('GYSName').AsString); FieldByName('CRUnit10').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('CRUnit').AsString); FieldByName('YCLPrice10').Value:=Trim(frmJWLInChkSelList.CDS_Main.fieldbyname('JWLPrice').AsString); Post; end; with Self.CDS_Sub do begin Edit; FieldByName('CRTime').Value:=FDate; FieldByName('CRType').Value:='正常出库'; Post; end; end; next; end; end; end; end; finally frmJWLInChkSelList.Free; end; end; procedure TfrmJWLChkOut.ToolButton3Click(Sender: TObject); begin if CDS_Sub.IsEmpty then Exit; if Trim(CDS_Sub.fieldbyname('MSID').AsString)<>'' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from CK_YCLONE_CR where MSID='''+Trim(CDS_Sub.fieldbyname('MSID').AsString)+''''); Open; end; if ADOQueryTemp.FieldByName('Chker').AsString<>'' then begin Application.MessageBox('已审核不能删除数据!','提示',0); Exit; end; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' delete from CK_YCLONE_CR where MSID='''+Trim(CDS_Sub.fieldbyname('MSID').AsString)+''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update CK_YCLONE_CR Set KCQty='); sql.Add('(select Sum(CRQty*JSFlag) from CK_YCLONE_CR A where A.RKID=CK_YCLONE_CR.MSID)'); sql.Add(' where MSID='''+Trim(CDS_Sub.fieldbyname('RKID').AsString)+''''); ExecSQL; end; CDS_Sub.Delete; end else begin CDS_Sub.Delete; end; end; function TfrmJWLChkOut.SaveData():Boolean; var MaxNo,CRID:string; begin try Result:=False; ADOQueryCmd.Connection.BeginTrans; CDS_Sub.DisableControls; CDS_Sub.First; while not CDS_Sub.Eof do begin if Trim(CDS_Sub.fieldbyname('MSID').AsString)<>'' then begin MaxNo:=Trim(CDS_Sub.fieldbyname('MSID').AsString); end else begin GetLSNo(ADOQueryCmd,MaxNo,'MC','CK_YCLONE_CR',4,1); with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from CK_YCLONE_CR where MSId='''+Trim(MaxNo)+''''); Open; end; if ADOQueryCmd.IsEmpty=false then begin GetLSNo(ADOQueryTemp,MaxNo,'MC','CK_YCLONE_CR',4,1); end; end; //保存出入表 with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from CK_YCLONE_CR where MSId='''+Trim(MaxNo)+''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_Sub.fieldbyname('MSId').AsString)<>'' then begin Edit; FieldByName('Editer').Value:=Trim(DName); FieldByName('EditerCode').Value:=Trim(DCode); FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp); end else begin Append; FieldByName('Filler').Value:=Trim(DName); FieldByName('FillerCode').Value:=Trim(DCode); end; FieldByName('MSId').Value:=Trim(MaxNo); FieldByName('RKId').Value:=Trim(CDS_Sub.fieldbyname('RKId').AsString); FieldByName('CRFlag').Value:='出库'; FieldByName('JSFlag').Value:=-1; RTSetSaveDataCDS(ADOQueryCmd,Tv1,CDS_Sub,'CK_YCLONE_CR',2); FieldByName('CRTime').Value:=Trim(CDS_Sub.fieldbyname('CRTime').AsString); FieldByName('CRType').Value:=Trim(CDS_Sub.fieldbyname('CRType').AsString); FieldByName('LYPerson').Value:=Trim(CDS_Sub.fieldbyname('LYPerson').AsString); FieldByName('LYDept').Value:=Trim(CDS_Sub.fieldbyname('LYDept').AsString); FieldByName('LYDPID').Value:=Trim(CDS_Sub.fieldbyname('LYDPID').AsString); FieldByName('LYYGID').Value:=Trim(CDS_Sub.fieldbyname('LYYGID').AsString); FieldByName('MoneyUserName').Value:=Trim(CDS_Sub.fieldbyname('MoneyUserName').AsString); FieldByName('CKName').Value:=Trim(Canshu1); FieldByName('Note').Value:=Trim(CDS_Sub.fieldbyname('Note').AsString); FieldByName('YCLName').Value:=Trim(CDS_Sub.fieldbyname('YCLName10').AsString); FieldByName('YCLSpec').Value:=Trim(CDS_Sub.fieldbyname('YCLSpec10').AsString); FieldByName('GYSName').Value:=Trim(CDS_Sub.fieldbyname('GYSName10').AsString); FieldByName('CRUnit').Value:=Trim(CDS_Sub.fieldbyname('CRUnit10').AsString); FieldByName('YCLPrice').Value:=CDS_Sub.fieldbyname('YCLPrice10').AsFloat; FieldByName('YCLMoney').Value:=CDS_Sub.fieldbyname('YCLMoney').AsFloat; if Trim(CDS_Sub.fieldbyname('CRQty').AsString)='' then begin FieldByName('CRQty').Value:=0; end else begin FieldByName('CRQty').Value:=Trim(CDS_Sub.fieldbyname('CRQty').AsString); end; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update CK_YCLONE_CR Set KCQty='); sql.Add('(select Sum(CRQty*JSFlag) from CK_YCLONE_CR A where A.RKID=CK_YCLONE_CR.MSID)'); sql.Add(' where MSID='''+Trim(CDS_Sub.fieldbyname('RKID').AsString)+''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from CK_YCLONE_CR '); sql.Add(' where MSID='''+Trim(CDS_Sub.fieldbyname('RKID').AsString)+''''); Open; end; if ADOQueryCmd.FieldByName('KCQty').Value<0 then begin ADOQueryCmd.Connection.RollbackTrans; CDS_Sub.EnableControls; Application.MessageBox(PChar(Trim(CDS_Sub.fieldbyname('YCLName10').AsString)+' 库存数小于零,不能保存!'),'提示',0); Exit; end; with CDS_Sub do begin Edit; FieldByName('MSID').Value:=Trim(MaxNo); end; CDS_Sub.Next; end; CDS_Sub.EnableControls; ADOQueryCmd.Connection.CommitTrans; FMainID:=Trim(MaxNo); Result:=True; ModalResult:=1; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmJWLChkOut.BtnSaveClick(Sender: TObject); begin if CDS_Sub.IsEmpty then Exit; if CDS_Sub.Locate('CRTime',Null,[]) then begin Application.MessageBox('出库时间不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRType',Null,[]) then begin Application.MessageBox('出库类型不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRQty',Null,[]) then begin Application.MessageBox('数量不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('LYPerson',Null,[]) then begin Application.MessageBox('领用人不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('LYDept',Null,[]) then begin Application.MessageBox('部门不能为空!','提示',0); Exit; end; if SaveData() then begin Application.MessageBox('保存成功!','提示',0); end; end; procedure TfrmJWLChkOut.FormShow(Sender: TObject); var FDate:TDateTime; begin readCxGrid('X原材料出库1',Tv1,'原材料仓库'); InitGrid(); end; procedure TfrmJWLChkOut.v1P_ChnNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin {try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YCL'; flagname:='原材料名称'; MainType:=Trim(Canshu1); if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('YCLCode').Value:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); Self.CDS_Sub.FieldByName('YCLName').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; } end; procedure TfrmJWLChkOut.v1ShortNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='GYS'+Trim(Self.Canshu1); flagname:='供应商名称'; MainType:=Trim(Canshu1); if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('GYS').Value:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); Self.CDS_Sub.FieldByName('GYSName').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkOut.v1UnitNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='DW'; flagname:='单位'; if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('CRUnit').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkOut.v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin {try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YCLSpec'; flagname:='原材料类型'; if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('YCLSpec').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; } end; procedure TfrmJWLChkOut.v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='LYDept'; flagname:='领用部门'; if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('LYDept').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkOut.v1Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='LYPerson'; flagname:='领用人'; if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('LYPerson').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkOut.v1CRQtyPropertiesEditValueChanged(Sender: TObject); var mavlue,FFieldName:string; begin mavlue:=TcxTextEdit(sender).EditingText; FFieldName:=Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; if mavlue='' then begin mavlue:='0'; end; with CDS_Sub do begin edit; FieldByName(FFieldName).Value:=mavlue; end; with CDS_Sub do begin edit; FieldByName('YCLMoney').Value:=FieldByName('YCLPrice10').AsFloat*FieldByName('CRQty').AsFloat; end; end; procedure TfrmJWLChkOut.v1CLNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmCLManage:=TfrmCLManage.Create(Application); with frmCLManage do begin TSsel.Visible:=true; TBAdd.Visible:=false; TBEdit.Visible:=false; TBDel.Visible:=false; TCK.Visible:=false; Panel2.Visible:=false; ToolButton1.Visible:=false; if ShowModal=1 then begin with Self.CDS_Sub do begin Edit; FieldByName('CLSpec').Value:=Trim(CDS_Main.fieldbyname('CLXNo').AsString); FieldByName('CLName').Value:=Trim(CDS_Main.fieldbyname('CLName').AsString); //FieldByName('CPNo').Value:=Trim(CDS_Main.fieldbyname('CPNo').AsString); FieldByName('CheHao').Value:=Trim(CDS_Main.fieldbyname('CheHao').AsString); end; end; end; finally frmCLManage.Free; end; end; procedure TfrmJWLChkOut.v1SJNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='SJName'; flagname:='司机名称'; if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('SJName').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; end.