unit U_DYSQInPut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxMemo, cxRichEdit, ComCtrls, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit, StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxCalendar, StrUtils, cxDropDownEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type TfrmDYSQInPut = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ScrollBox1: TScrollBox; ToolBar2: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; ADOTemp: TADOQuery; ADOCmd: TADOQuery; DataSource1: TDataSource; Order_Sub: TClientDataSet; ADOQuery1: TADOQuery; Label14: TLabel; cxGridPopupMenu2: TcxGridPopupMenu; Label1: TLabel; CRType: TComboBox; Note: TEdit; Label12: TLabel; Label11: TLabel; SHDanWei: TBtnEditC; CustomerNoName: TBtnEditA; v1Column1: TcxGridDBColumn; cv1Column3: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; dazi1: TcxStyle; lbl2: TLabel; DLYDATE: TDateTimePicker; Label3: TLabel; v1Column2: TcxGridDBColumn; Label7: TLabel; XSType: TComboBox; v1Column3: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; filler: TEdit; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Label16: TLabel; HZUnit: TBtnEditC; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; Label28: TLabel; MDTT: TComboBox; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure SHDanWeiBtnUpClick(Sender: TObject); procedure SHDanWeiBtnDnClick(Sender: TObject); procedure CustomerNoNameBtnClick(Sender: TObject); procedure cv1Column3PropertiesEditValueChanged(Sender: TObject); procedure Tv1Column6PropertiesEditValueChanged(Sender: TObject); procedure HZUnitBtnUpClick(Sender: TObject); procedure HZUnitBtnDnClick(Sender: TObject); private fuserName: string; procedure InitData(); function SaveData(): Boolean; { Private declarations } public PState, CopyInt: Integer; FMainId, FFMainId, ChkStr, ConPriceStr: string; FXS: Integer; { Public declarations } end; var frmDYSQInPut: TfrmDYSQInPut; newh: hwnd; implementation uses U_DataLink, U_ZDYHelp, U_RTFun, U_SQKCHZSelList, U_ContractListNXSel, U_CPManageFMSel, U_ZdyAttachment, U_ClothSCYWYListSel, U_ProductOrderListSel, U_CKProductBCPKCListSel; {$R *.dfm} procedure TfrmDYSQInPut.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('调样发货申请录入', Tv1, '发货管理77'); end; procedure TfrmDYSQInPut.InitData(); var fsj: string; begin if PState = 0 then begin DLYDATE.datetime := strtodatetime(Trim(FormatDateTime('yyyy-MM-dd', Now))); end; with ADOQuery1 do begin Close; SQL.Clear; sql.Add(' select A.* '); sql.Add(' from FHSQ_Sub A'); if PState = 1 then begin sql.Add('where FSId=''' + Trim(FMainId) + ''''); end; if PState = 0 then begin sql.Add(' where 1<>1'); end; Open; end; SCreateCDS20(ADOQuery1, Order_Sub); SInitCDSData20(ADOQuery1, Order_Sub); with ADOQuery1 do begin Close; sql.Clear; sql.Add('select A.* '); sql.Add(' from FHSQ_Main A'); sql.Add(' where FSId=''' + Trim(FMainId) + ''' '); Open; end; SCSHDataNew(ADOQuery1, ScrollBox1, 1); if ADOQuery1.IsEmpty = True then begin filler.Text := Trim(DName); end; if FMainId = '' then begin CustomerNoName.Text := '板房'; end; end; procedure TfrmDYSQInPut.FormShow(Sender: TObject); var fsj: string; begin readCxGrid('调样发货申请录入', Tv1, '发货管理77'); InitData(); end; function TfrmDYSQInPut.SaveData(): Boolean; var maxno, maxmnno, FSSId: string; fconNO, fmxType: string; begin try ADOCmd.Connection.BeginTrans; ///保存主表 if Trim(FMainId) = '' then begin if GetLSNo(ADOCmd, maxno, 'SM', 'FHSQ_Main', 4, 1) = False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(FMainId); end; with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from FHSQ_Main where FSID=''' + Trim(FMainId) + ''''); Open; end; with ADOCmd do begin if Trim(FMainId) = '' then begin Append; end else begin Edit; end; FieldByName('SQType').Value := '调样'; FieldByName('FSID').Value := Trim(maxno); RTSetsavedata(ADOCmd, 'FHSQ_Main', ScrollBox1, 1); if Trim(FMainId) = '' then begin // FieldByName('Filler').Value := Trim(DName); FieldByName('SQDate').Value := SGetServerDate(ADOTemp); end else begin FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOTemp); end; Post; end; FMainId := Trim(maxno); ///保存子表 Order_Sub.DisableControls; with Order_Sub do begin First; while not Eof do begin if Trim(Order_Sub.fieldbyname('SSId').AsString) = '' then begin if GetLSNo(ADOCmd, maxno, 'SS', 'FHSQ_Sub', 4, 1) = False then begin Order_Sub.EnableControls; ADOCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(Order_Sub.fieldbyname('SSId').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from FHSQ_Sub '); sql.Add(' where SSId=''' + Trim(maxno) + ''''); Open; end; if ADOCmd.IsEmpty then begin FSSId := ''; end else begin FSSId := Trim(maxno); end; with ADOCmd do begin if Trim(FSSId) = '' then begin Append; FieldByName('Filler').Value := Trim(DName); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOTemp); end; FieldByName('FSID').Value := Trim(FMainId); FieldByName('SSID').Value := Trim(maxno); RTSetSaveDataCDS(ADOCmd, Tv1, Order_Sub, 'FHSQ_Sub', 0); FieldByName('MJID').Value := Order_Sub.fieldbyname('MJID').Value; FieldByName('MainId').Value := Order_Sub.fieldbyname('MainId').Value; FieldByName('SubId').Value := Order_Sub.fieldbyname('SubId').Value; FieldByName('SSConMainId').Value := Order_Sub.fieldbyname('SSConMainId').Value; FieldByName('SSConSubId').Value := Order_Sub.fieldbyname('SSConSubId').Value; Post; end; Order_Sub.Edit; Order_Sub.FieldByName('SSID').Value := Trim(maxno); Next; end; with ADOCmd do begin Close; sql.Clear; SQL.Add('update FHSQ_Main set DBConNo=cast((select '' ''+ SSConNo from FHSQ_Sub X where X.FSId=FHSQ_Main.FSId and X.SSConNo<>FHSQ_Main.ConNo for xml Path('''')) as varchar(100)) '); SQL.Add(', SQPSHZ= (select sum(SQPS) from FHSQ_Sub X where X.FSId=FHSQ_Main.FSId ) '); SQL.Add(', SQqtyHZ= (select sum(SQqty) from FHSQ_Sub X where X.FSId=FHSQ_Main.FSId ) '); SQL.Add('where FSID=''' + Trim(FMainId) + ''''); ExecSQL; end; end; Order_Sub.EnableControls; ADOCmd.Connection.CommitTrans; Result := True; except ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); Result := False; end; end; procedure TfrmDYSQInPut.TBSaveClick(Sender: TObject); var Freal: Double; begin ToolBar1.SetFocus; if Trim(CRType.Text) = '' then begin Application.MessageBox('出库类型不能为空!', '提示', 0); Exit; end; if Trim(MDTT.Text) = '' then begin Application.MessageBox('码单抬头不能为空!', '提示', 0); Exit; end; if Trim(CustomerNoName.Text) = '' then begin Application.MessageBox('客户不能为空!', '提示', 0); Exit; end; if (Order_Sub.Locate('SQPS', null, [])) and (Order_Sub.Locate('SQqty', null, [])) = True then begin Application.MessageBox('细码申请匹数和数量不能全为空!', '提示', 0); Exit; end; with Order_Sub do begin First; while not Eof do begin if Order_Sub.FieldByName('sqqty').AsFloat < 0 then begin Application.MessageBox('申请数量不能为负数!', '提示', 0); Exit; end; Next; end; end; if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; procedure TfrmDYSQInPut.ToolButton1Click(Sender: TObject); var FQtyUnit, FFSubid: string; begin // if Trim(CustomerNoName.Text) = '' then // begin // Application.MessageBox('客户不能为空!', '提示', 0); // Exit; // end; try frmCKProductBCPKCListSel := TfrmCKProductBCPKCListSel.Create(Application); with frmCKProductBCPKCListSel do begin if ShowModal = 1 then begin while CDS_Main.locate('SSel', true, []) do begin if (Self.Order_Sub.Locate('MJID', Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('MJID').AsString), []) = False) and ((frmCKProductBCPKCListSel.CDS_Main.fieldbyname('ISSD').AsString <> '已锁定')) then begin with Self.Order_Sub do begin Append; FieldByName('SCConNo').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('Orderno').AsString); FieldByName('MainId').Value := frmCKProductBCPKCListSel.CDS_Main.fieldbyname('MainId').Value; FieldByName('SubId').Value := frmCKProductBCPKCListSel.CDS_Main.fieldbyname('SubId').Value; FieldByName('PRTColor').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('PRTColor').AsString); FieldByName('SPrtCode').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('MPRTCode').AsString); FieldByName('SPrtCodeName').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('MPRTCodeName').AsString); FieldByName('PRTHX').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('PRTHX').AsString); FieldByName('MJID').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('MJID').AsString); FieldByName('SQQty').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('Qty').AsString); FieldByName('gangno').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('GANGHAO').AsString); FieldByName('CANGWEI').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('rkPLACE').AsString); FieldByName('orderUnit').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('qtyunit').AsString); FieldByName('sfkp').Value := '否'; FieldByName('orderUnit').Value := Trim(HZUnit.Text); FieldByName('PRICE').Value := 0; FieldByName('money').Value := 0; if (Trim(HZUnit.Text) = 'KG') or (Trim(HZUnit.Text) = '公斤') then begin FieldByName('SQQty').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('KGQty').AsString); end else begin FieldByName('SQQty').Value := Trim(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('QTY').AsString); // if XSType.Text <> '现货' then // begin // FieldByName('money').Value := StrToFloatdef(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('QTY').AsString, 0) * StrToFloatdef(frmCKProductBCPKCListSel.CDS_Main.fieldbyname('SCSPRICE').AsString, 0); // end; end; Post; end; end; CDS_Main.Delete; end; end; end; finally frmCKProductBCPKCListSel.Free; end; end; procedure TfrmDYSQInPut.ToolButton2Click(Sender: TObject); begin if Order_Sub.IsEmpty then Exit; if Trim(Order_Sub.fieldbyname('SSId').AsString) <> '' then begin with ADOTemp do begin Close; sql.Clear; sql.Add('select * from FHSQ_Sub where SSId=''' + Trim(Order_Sub.fieldbyname('SSId').AsString) + ''''); sql.add(' and isnull(FHPS,0)>0'); Open; end; if ADOTemp.IsEmpty = False then begin Application.MessageBox('已发货不能删除数据!', '提示', 0); exit; end; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; with ADOCmd do begin Close; sql.Clear; sql.Add('delete FHSQ_Sub where SSId=''' + Trim(Order_Sub.fieldbyname('SSId').AsString) + ''''); ExecSQL; end; with ADOCmd do begin Close; sql.Clear; sql.Add('Update FHSQ_Main Set '); sql.Add('SQPSHZ=(select Sum(SQPS) from FHSQ_Sub A where A.FSID=FHSQ_Main.FSID)'); sql.Add('where FSID=''' + Trim(FMainId) + ''''); ExecSQL; end; end; Order_Sub.Delete; end; procedure TfrmDYSQInPut.SHDanWeiBtnUpClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'SHDanWei'; flagname := '收货单位'; if ShowModal = 1 then begin Self.SHDanWei.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmDYSQInPut.SHDanWeiBtnDnClick(Sender: TObject); begin SHDanWei.Text := ''; end; procedure TfrmDYSQInPut.CustomerNoNameBtnClick(Sender: TObject); begin try frmZdyAttachment := TfrmZdyAttachment.Create(Application); with frmZdyAttachment do begin if ShowModal = 1 then begin Self.CustomerNoName.Text := Trim(frmZdyAttachment.CDS_HZ.fieldbyname('CoName').AsString); end; end; finally frmZdyAttachment.Free; end; end; procedure TfrmDYSQInPut.cv1Column3PropertiesEditValueChanged(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 Order_Sub do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); FieldbyName('Money').Value := format('%.2f', [FieldByName('sqqty').AsFloat * FieldByName('Price').AsFloat + FieldByName('BGFee').AsFloat]); Post; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmDYSQInPut.Tv1Column6PropertiesEditValueChanged(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 Order_Sub do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); FieldbyName('Money').Value := format('%.2f', [FieldByName('sqqty').AsFloat * FieldByName('Price').AsFloat + FieldByName('BGFee').AsFloat]); Post; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmDYSQInPut.HZUnitBtnUpClick(Sender: TObject); begin if not Order_Sub.IsEmpty then begin Application.MessageBox('明细数据已选择,不能修改!', '提示', 0); exit; end; try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'HZUnit'; flagname := '数量单位'; if ShowModal = 1 then begin Self.HZUnit.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmDYSQInPut.HZUnitBtnDnClick(Sender: TObject); begin if not Order_Sub.IsEmpty then begin Application.MessageBox('明细数据已选择,不能修改!', '提示', 0); exit; end; HZUnit.Text := ''; end; end.