unit U_WarpRollerCk; 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, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type TfrmWarpRollerCk = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; CRTime: TDateTimePicker; Label2: TLabel; CRType: TComboBox; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; ToolBar2: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; Label8: TLabel; JZRKNo: TEdit; Label9: TLabel; ToFactoryName: TBtnEditA; Panel3: TPanel; ADOQueryMain: TADOQuery; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column3: TcxGridDBColumn; v1P_Code: TcxGridDBColumn; v1P_CodeName: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure ToFactoryNameBtnClick(Sender: TObject); procedure v1QtyPropertiesEditValueChanged(Sender: TObject); procedure FHAddressBtnDnClick(Sender: TObject); procedure v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ToolButton2Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); private procedure InitGrid(); function savedate(): Boolean; function CheckData(): Boolean; { Private declarations } public fkeyNO: string; FType: integer; fCKName: string; { Public declarations } end; var frmWarpRollerCk: TfrmWarpRollerCk; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_WarpRollerkCList, U_ZdyAttachment, U_ZDYHelpSel, U_ClothSCHZListSel, U_ZdyAttachGYS; {$R *.dfm} function TfrmWarpRollerCk.CheckData(): Boolean; begin try if trim(CRType.Text) = '' then raise Exception.Create('出库类型不能为空!'); if trim(CRType.Text) <> '损耗出库' then begin if trim(ToFactoryName.Text) = '' then raise Exception.Create('出到工厂不能为空!'); end; // if cds_main.Locate('QtyUnit', '', []) then // raise Exception.Create('数量单位不能为空!'); // if cds_main.Locate('QtyUnit', NULL, []) then // raise Exception.Create('数量单位不能为空!'); Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; function TfrmWarpRollerCk.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_WarpBeam_CR'); sql.Add('where JZRKID=' + quotedstr(Trim(CDS_Main.FieldByName('JZRKID').AsString))); open; end; if ADOQueryCmd.IsEmpty then begin if GetLSNo(ADOQueryTmp, MaxNo, 'ZJC', 'CK_WarpBeam_CR', 4, 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('JZRKID').AsString); ADOQueryCmd.Edit; ADOQueryCmd.FieldByName('editer').Value := trim(dName); ADOQueryCmd.FieldByName('editTime').Value := SGetServerDateTime(adoqueryTmp); end; ADOQueryCmd.FieldByName('JZRKNo').Value := trim(JZRKNo.Text); ADOQueryCmd.FieldByName('JZRKID').Value := trim(MaxNo); ADOQueryCmd.FieldByName('ToFactoryName').Value := trim(ToFactoryName.Text); ADOQueryCmd.FieldByName('CRTime').Value := formatdateTime('yyyy-MM-dd', CRTIme.Date); ADOQueryCmd.FieldByName('CRType').Value := trim(CRType.Text); ADOQueryCmd.FieldByName('CRFlag').Value := '出库'; ADOQueryCmd.FieldByName('CRQtyFlag').Value := -1; //保存明细 RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Main, 'CK_WarpBeam_CR', 0); //保存隐藏ID ADOQueryCmd.FieldByName('WBId').Value := trim(fieldbyname('WBId').AsString); ADOQueryCmd.FieldByName('KCID').Value := trim(fieldbyname('KCID').AsString); ADOQueryCmd.Post; // 更新库存 // with ADOQueryCmd do // begin // Close; // SQL.Clear; // SQL.Add('exec P_Up_WarpRoller ' + quotedstr(trim(CDS_Main.fieldbyname('KCID').AsString))); // Open; // end; // if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then // begin // CDS_Main.EnableControls; // ADOQueryCmd.Connection.RollbackTrans; // Application.MessageBox('入库数量少于出库数量!', '提示', 0); // Exit; // end; Edit; FieldByName('JZRKID').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 TfrmWarpRollerCk.InitGrid(); begin try with adoqueryMain do begin close; sql.Clear; sql.Add('select A.* from CK_WarpBeam_CR A'); if fType=1 then begin sql.Add('where A.JZRKID ' + trim(fkeyNO)); end else sql.Add('where A.JZRKID =' + QuotedStr(Trim(fkeyNO))); open; end; SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); if not CDS_Main.IsEmpty then begin CRTime.Date := CDS_Main.fieldbyname('CRTime').AsDateTime; CRType.ItemIndex := CRType.Items.IndexOf(trim(CDS_Main.fieldbyname('CRType').AsString)); JZRKNo.Text := trim(CDS_Main.fieldbyname('JZRKNo').AsString); ToFactoryName.Text := trim(CDS_Main.fieldbyname('ToFactoryName').AsString); end; finally end; end; procedure TfrmWarpRollerCk.FormDestroy(Sender: TObject); begin frmWarpRollerCk := nil; end; procedure TfrmWarpRollerCk.FormCreate(Sender: TObject); begin CRTime.Date := SGetServerDate10(ADOQueryTmp); end; procedure TfrmWarpRollerCk.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cahide; end; procedure TfrmWarpRollerCk.FormShow(Sender: TObject); var fbhType, fInoutNo: string; begin readCxGrid(self.Caption, Tv1, '仓储管理'); InitGrid(); if fType = 0 then begin if GetLSNo(ADOQueryCmd, fkeyNo, 'CK', 'CK_WarpBeam_CR', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; JZRKNo.Text := trim(fkeyNo); end; end; procedure TfrmWarpRollerCk.TBSaveClick(Sender: TObject); begin if cds_main.IsEmpty then exit; CRTime.SetFocus; if CheckData() = false then exit; if savedate() then begin application.MessageBox('数据保存成功!', '提示信息'); end else begin application.MessageBox('数据保存失败!', '提示信息', MB_ICONERROR); end; end; procedure TfrmWarpRollerCk.ToolButton1Click(Sender: TObject); var FMJID: string; begin frmWarpRollerkCList := TfrmWarpRollerkCList.create(self); with frmWarpRollerkCList do begin fType :=10; 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('KCID', trim(cds_main.fieldbyname('KCID').AsString), [])) then begin self.cds_main.Append; self.cds_main.FieldByName('WBId').Value := trim(cds_main.fieldbyname('WBId').AsString); self.cds_main.FieldByName('WBCode').Value := trim(cds_main.fieldbyname('WBCode').AsString); self.cds_main.FieldByName('WBName').Value := trim(cds_main.fieldbyname('WBName').AsString); self.cds_main.fieldbyname('fromFactoryName').Value := trim(cds_main.fieldbyname('fromFactoryName').AsString); self.cds_main.fieldbyname('FactoryName').Value := trim(cds_main.fieldbyname('FactoryName').AsString); self.cds_main.FieldByName('KCID').Value := trim(cds_main.fieldbyname('KCID').AsString); self.cds_main.Post; end; cds_main.Next; end; cds_main.EnableControls; end; free; end; end; procedure TfrmWarpRollerCk.TBCloseClick(Sender: TObject); begin writeCxGrid(self.Caption, Tv1, '仓储管理'); close; end; procedure TfrmWarpRollerCk.ToFactoryNameBtnClick(Sender: TObject); begin if (trim(CRType.Text) = '加工出库') or (trim(CRType.Text) = '生产出库') or (trim(CRType.Text) = '退货出库') then begin try frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application); with frmZdyAttachGYS do begin if ShowModal = 1 then begin ToFactoryName.Text := Trim(CDS_HZ.fieldbyname('Name').AsString); end; end; finally frmZdyAttachGYS.Free; end; end else begin try frmZdyAttachment := TfrmZdyAttachment.Create(Application); with frmZdyAttachment do begin if ShowModal = 1 then begin ToFactoryName.Text := Trim(CDS_HZ.fieldbyname('Name').AsString); end; end; finally frmZdyAttachment.Free; end; end; end; procedure TfrmWarpRollerCk.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 TfrmWarpRollerCk.FHAddressBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmWarpRollerCk.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 TfrmWarpRollerCk.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 TfrmWarpRollerCk.ToolButton2Click(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_WarpRoller_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_WarpRoller ' + quotedstr(Trim(CDS_Main.FieldByName('KCID').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; procedure TfrmWarpRollerCk.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmWarpRollerCk.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; end.