unit U_SampleSendingLR; 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; type TfrmSampleSendingLR = 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; InoutNo: TEdit; Label9: TLabel; ToFactoryName: TBtnEditA; Panel3: TPanel; ADOQueryMain: TADOQuery; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1MJXH: TcxGridDBColumn; v1P_Code: TcxGridDBColumn; v1P_CodeName: TcxGridDBColumn; v1P_SPEC: TcxGridDBColumn; v1Price: TcxGridDBColumn; v1P_MF: TcxGridDBColumn; v1P_KZ: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Money: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; v1Column1: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column5: 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 v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); 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); procedure ToolButton1Click(Sender: TObject); procedure v1P_CodePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private procedure InitGrid(); function savedate(): Boolean; { Private declarations } public fkeyNO: string; FType: integer; fCKName: string; { Public declarations } end; var frmSampleSendingLR: TfrmSampleSendingLR; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_ZdyAttachment, U_ZDYHelpSel, U_ZdyAttachGYS, U_CPManageSel; {$R *.dfm} function TfrmSampleSendingLR.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 SampleSending'); sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); open; end; if ADOQueryCmd.IsEmpty then begin if GetLSNo(ADOQueryTmp, MaxNo, 'SS', 'SampleSending', 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(inoutNo.Text); ADOQueryCmd.FieldByName('CRNO').Value := trim(MaxNo); ADOQueryCmd.FieldByName('CKName').Value := trim(fCKName); 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, 'SampleSending', 0); //保存隐藏字段 ADOQueryCmd.FieldByName('mainID').Value := trim(fieldbyname('mainID').AsString); ADOQueryCmd.FieldByName('subID').Value := trim(fieldbyname('subID').AsString); ADOQueryCmd.FieldByName('Rollnum').Value := fieldbyname('Rollnum').AsInteger; ADOQueryCmd.Post; Edit; 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 TfrmSampleSendingLR.InitGrid(); begin try with adoqueryMain do begin close; sql.Clear; sql.Add('select A.* from CK_Sample_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 CRTime.Date := CDS_Main.fieldbyname('CRTime').AsDateTime; CRType.ItemIndex := CRType.Items.IndexOf(trim(CDS_Main.fieldbyname('CRType').AsString)); InoutNO.Text := trim(CDS_Main.fieldbyname('InoutNO').AsString); ToFactoryName.Text := trim(CDS_Main.fieldbyname('ToFactoryName').AsString); end; finally end; end; procedure TfrmSampleSendingLR.FormDestroy(Sender: TObject); begin frmSampleSendingLR := nil; end; procedure TfrmSampleSendingLR.FormCreate(Sender: TObject); begin CRTime.Date := SGetServerDate10(ADOQueryTmp); end; procedure TfrmSampleSendingLR.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cahide; end; procedure TfrmSampleSendingLR.FormShow(Sender: TObject); var fbhType, fInoutNo: string; begin readCxGrid(trim(self.Caption), Tv1, '样品仓库'); InitGrid(); if fType = 0 then begin if GetLSNo(ADOQueryCmd, fkeyNo, 'YCK', 'CK_Sample_CR', 3, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; inoutNo.Text := trim(fkeyNo); end; end; procedure TfrmSampleSendingLR.TBSaveClick(Sender: TObject); begin if cds_main.IsEmpty then exit; CRTime.SetFocus; if trim(CRType.Text) = '' then begin application.MessageBox('出库类型不能为空!', '提示信息', 0); exit; end; if trim(ToFactoryName.Text) = '' then begin application.MessageBox('出库单位不能为空!', '提示信息', 0); exit; end; if cds_main.Locate('QtyUnit', '', []) then begin application.MessageBox('数量单位不能为空!', '提示信息', 0); exit; end; if cds_main.Locate('QtyUnit', NULL, []) then begin application.MessageBox('数量单位不能为空!', '提示信息', 0); exit; end; if savedate() then begin application.MessageBox('数据保存成功!', '提示信息'); end else begin application.MessageBox('数据保存失败!', '提示信息', MB_ICONERROR); end; end; procedure TfrmSampleSendingLR.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 TfrmSampleSendingLR.TBCloseClick(Sender: TObject); begin writeCxGrid(trim(self.Caption), Tv1, '样品仓库'); close; end; procedure TfrmSampleSendingLR.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('CoName').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('CoName').AsString); end; end; finally frmZdyAttachment.Free; end; end; end; procedure TfrmSampleSendingLR.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 TfrmSampleSendingLR.FHAddressBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmSampleSendingLR.v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin // try // frmOrderListSel:=TfrmOrderListSel.Create(Application); // with frmOrderListSel do // begin // if ShowModal=1 then // begin // Self.CDS_Main.Edit; // Self.CDS_Main.FieldByName('OrderNo').Value:=Trim(Order_Main.fieldbyname('OrderNo').AsString); // Self.CDS_Main.FieldByName('MainId').Value:=Trim(Order_Main.fieldbyname('MainId').AsString); // end; // end; // finally // frmOrderListSel.Free; // end; // self.tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmSampleSendingLR.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 TfrmSampleSendingLR.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 SampleSending set Valid=''N'' where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; CDS_Main.Delete; end; end; procedure TfrmSampleSendingLR.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmSampleSendingLR.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmSampleSendingLR.ToolButton1Click(Sender: TObject); begin if CDS_Main.IsEmpty then begin with CDS_Main do begin append; FieldbyName('CPType').Value := '正品'; FieldbyName('QtyUnit').Value := 'M'; FieldbyName('Rollnum').Value := 0; FieldbyName('Price').Value := 0; FieldbyName('qty').Value := 0; post; end; end else begin CopyAddRowCDS(CDS_Main); with CDS_Main do begin edit; FieldbyName('CRNO').Value := ''; post; end; end; end; procedure TfrmSampleSendingLR.v1P_CodePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin frmCPManageSel := TfrmCPManageSel.Create(self); with frmCPManageSel do begin if showmodal = 1 then begin self.CDS_Main.Edit; self.CDS_Main.fieldbyname('P_Code').Value := CDS_Main.fieldbyname('CYNo').asstring; self.CDS_Main.fieldbyname('P_CodeName').Value := CDS_Main.fieldbyname('CYName').asstring; self.CDS_Main.fieldbyname('P_SPEC').Value := CDS_Main.fieldbyname('CYSpec').asstring; self.CDS_Main.fieldbyname('P_CF').Value := CDS_Main.fieldbyname('CYCF').asstring; self.CDS_Main.fieldbyname('P_Color').Value := CDS_Main.fieldbyname('CYColor').asstring; self.CDS_Main.fieldbyname('P_HX').Value := CDS_Main.fieldbyname('CYHX').asstring; self.CDS_Main.fieldbyname('P_MF').Value := CDS_Main.fieldbyname('CYMF').asstring; self.CDS_Main.fieldbyname('P_KZ').Value := CDS_Main.fieldbyname('CYKZ').asstring; self.CDS_Main.Post; end; free; end; tv1.Controller.EditingController.ShowEdit(); end; end.