unit U_GYSFPInPutWGL; 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, cxDropDownEdit, cxCalendar, cxGridCustomPopupMenu, cxGridPopupMenu, cxSplitter, cxCheckBox; type TfrmGYSFPInPutWGL = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ADOTemp: TADOQuery; ADOCmd: TADOQuery; DataSource1: TDataSource; Order_Sub: TClientDataSet; ADOQuery1: TADOQuery; cxGridPopupMenu1: TcxGridPopupMenu; ToolButton3: TToolButton; ToolButton4: TToolButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column6: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column20: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column12: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1Column4: TcxGridDBColumn; ADOQueryMain: TADOQuery; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure v1Column3PropertiesEditValueChanged(Sender: TObject); procedure v1Column20PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column18PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private FXS:Integer; procedure InitData(); procedure ZDYHelp(FButn:TcxButtonEdit;LType:string); function SaveData():Boolean; procedure GetMaxConNO(); { Private declarations } public PState,PCopyInt:Integer; FMainId,FConNo,FConType,FYLType:String; { Public declarations } end; var frmGYSFPInPutWGL: TfrmGYSFPInPutWGL; implementation uses U_DataLink,U_ZDYHelp,U_RTFun,U_ZDYHelpSel,U_BGMXSelList, U_GYSSelList; {$R *.dfm} procedure TfrmGYSFPInPutWGL.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('供应商发票录入',Tv1,'发票管理'); end; procedure TfrmGYSFPInPutWGL.InitData(); begin with ADOQuery1 do begin Close; SQL.Clear; sql.Add(' select A.* '); SQL.Add(' from FP_GYSNB A'); sql.Add(' where A.FMID='''+Trim(FMainId)+''''); Open; end; SCreateCDS20(ADOQuery1,Order_Sub); SInitCDSData20(ADOQuery1,Order_Sub); end; procedure TfrmGYSFPInPutWGL.ZDYHelp(FButn:TcxButtonEdit;LType:string); begin end; procedure TfrmGYSFPInPutWGL.FormShow(Sender: TObject); begin ReadCxGrid('供应商发票录入',Tv1,'发票管理'); InitData(); end; procedure TfrmGYSFPInPutWGL.GetMaxConNO(); begin end; function TfrmGYSFPInPutWGL.SaveData():Boolean; var maxno,LSFMID:String; begin try Result:=False; ADOCmd.Connection.BeginTrans; //保存主表 Order_Sub.DisableControls; with Order_Sub do begin First; while not Eof do begin { if Trim(Order_Sub.fieldbyname('OrderNo').AsString)<>'' then begin with ADOTemp do begin Close; sql.Clear; sql.Add('select * from JYOrder_Main where OrderNo='''+Trim(Order_Sub.fieldbyname('OrderNo').AsString)+''''); Open; end; if ADOTemp.IsEmpty then begin Order_Sub.EnableControls; ADOCmd.Connection.RollbackTrans; Application.MessageBox(PChar('订单号:'+Trim(Order_Sub.fieldbyname('OrderNo').AsString)+'不存在!'),'提示',0); Exit; end; end; } with ADOTemp do begin Close; sql.Clear; sql.Add('select * from FP_GYSNB where FMID='''+Trim(Order_Sub.fieldbyname('FMID').AsString)+''''); Open; end; LSFMID:=Trim(ADOTemp.fieldbyname('FMID').AsString); if Trim(LSFMID)='' then begin if GetLSNo(ADOCmd,maxno,'FM','FP_GYSNB',4,1)=False then begin Order_Sub.EnableControls; ADOCmd.Connection.RollbackTrans; Application.MessageBox('取规则流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(LSFMID); end; with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from FP_GYSNB where FMID='''+Trim(Order_Sub.fieldbyname('FMID').AsString)+''''); Open; end; with ADOCmd do begin if Trim(LSFMID)='' then begin Append; end else begin Edit; end; FieldByName('FMID').Value:=Trim(maxno); FieldByName('BGID').Value:=Order_Sub.fieldbyname('BGID').Value; FieldByName('BCID').Value:=Order_Sub.fieldbyname('BCID').Value; FieldByName('BFID').Value:=Order_Sub.fieldbyname('BFID').Value; FieldByName('FactoryNo').Value:=Order_Sub.fieldbyname('FactoryNo').Value; FieldByName('OrderNo').Value:=Order_Sub.fieldbyname('OrderNo').Value; FieldByName('FMType').Value:='GYS'; RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'FP_GYSNB',0) ; if Trim(LSFMID)='' then begin FieldByName('Filler').Value:=Trim(DName); end else begin FieldByName('Editer').Value:=Trim(DName); FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp); end; Post; end; with ADOCmd do begin Close; sql.Clear; sql.Add('select * from FP_GYSNB where FPNO='''+Trim(Order_Sub.fieldbyname('FPNO').AsString)+''''); sql.Add(' and isnull(FMType,'''')=''GYS'' '); Open; end; if ADOCmd.RecordCount>1 then begin Order_Sub.EnableControls; ADOCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox(PChar('发票号:'+Trim(Order_Sub.fieldbyname('FPNO').AsString)+'重复!'),'',0); Exit; end; Edit; FieldByName('FMID').Value:=Trim(maxno); Post; Next; end; end; Order_Sub.EnableControls; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmGYSFPInPutWGL.TBSaveClick(Sender: TObject); var FPPrice,PRTPrice,BCMoney,FPQty,ChaMoney:string; begin ToolBar1.SetFocus; if Order_Sub.IsEmpty then begin Application.MessageBox('明细不能为空!','提示',0); exit; end; if Order_Sub.Locate('FPNO',null,[]) then begin Application.MessageBox('发票号不能为空!','提示',0); Exit; end; if Order_Sub.Locate('FPDate',null,[]) then begin Application.MessageBox('发票日期不能为空!','提示',0); Exit; end; if Order_Sub.Locate('Qty',null,[]) then begin Application.MessageBox('数量不能为空!','提示',0); Exit; end; if Order_Sub.Locate('Price',null,[]) then begin Application.MessageBox('单价不能为空!','提示',0); Exit; end; if Order_Sub.Locate('Money',null,[]) then begin Application.MessageBox('金额不能为空!','提示',0); Exit; end; if Order_Sub.Locate('GHDanWei',null,[]) then begin Application.MessageBox('本公司抬头不能为空!','提示',0); Exit; end; if Order_Sub.Locate('FactoryName',null,[]) then begin Application.MessageBox('供应商不能为空!','提示',0); Exit; end; if Order_Sub.Locate('BFName',null,[]) then begin Application.MessageBox('货物品名不能为空!','提示',0); Exit; end; if SaveData() then begin Application.MessageBox('保存成功!','提示',0); //ModalResult:=1; end; end; procedure TfrmGYSFPInPutWGL.ToolButton3Click(Sender: TObject); var FSQDate:string; begin FSQDate:=Trim(FormatDateTime('yyyy-MM-dd',SGetServerDate(ADOTemp))); if Order_Sub.IsEmpty=False then begin CopyAddRowCDS(Order_Sub); end else begin with Order_Sub do begin Append; FieldByName('FPDate').Value:=FSQDate; FieldByName('QtyUnit').Value:='M'; Post; end; end; with Order_Sub do begin Edit; FieldByName('FMID').Value:=Null; FieldByName('FPNO').Value:=Null; Post; end; end; procedure TfrmGYSFPInPutWGL.ToolButton4Click(Sender: TObject); begin if Order_Sub.IsEmpty then Exit; if Trim(Order_Sub.fieldbyname('FMId').AsString)<>'' then begin if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; with ADOCmd do begin Close; sql.Clear; sql.Add('delete FP_GYSNB where FMId='''+Trim(Order_Sub.fieldbyname('FMId').AsString)+''''); ExecSQL; end; end; Order_Sub.Delete; end; procedure TfrmGYSFPInPutWGL.v1Column3PropertiesEditValueChanged( Sender: TObject); var mvalue,FQty,FPrice,FMoney,FName:String; begin FName:=Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; mvalue:=TcxTextEdit(Sender).EditingText; if Trim(mvalue)='' then mvalue:='0'; with Order_Sub do begin Edit; FieldByName(FName).Value:=mvalue; Post; end; FQty:=Order_Sub.fieldbyname('Qty').AsString; FPrice:=Order_Sub.fieldbyname('Price').AsString; FMoney:=Order_Sub.fieldbyname('Money').AsString; if Trim(FQty)='' then FQty:='0'; if Trim(FPrice)='' then FPrice:='0'; if Trim(FMoney)='' then FMoney:='0'; if Trim(FName)<>'Money' then begin with Order_Sub do begin Edit; FieldByName('Money').Value:=StrToFloat(FQty)*StrToFloat(FPrice); Post; end; end else begin if Trim(FQty)<>'0' then begin with Order_Sub do begin Edit; FieldByName('Price').Value:=StrToFloat(FMoney)*1.000000/StrToFloat(FQty); Post; end; end else begin with Order_Sub do begin Edit; FieldByName('Price').Value:=Null; Post; end; end; end; end; procedure TfrmGYSFPInPutWGL.v1Column20PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='GSTT'; flagname:='公司抬头'; V1ZdyStr1.Visible:=True; V1ZdyStr2.Visible:=True; V1ZdyStr3.Visible:=True; V1ZdyStr4.Visible:=True; V1ZdyStr1.Caption:='简称'; V1ZdyStr2.Caption:='电话'; V1ZdyStr3.Caption:='传真'; V1ZdyStr4.Caption:='地址'; frmZDYHelp.Align:=alClient; if ShowModal=1 then begin with Order_Sub do begin Edit; FieldByName('GHDanWei').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmGYSFPInPutWGL.v1Column18PropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='GYSFPName'; flagname:='货物品名'; if ShowModal=1 then begin with Self.Order_Sub do begin Edit; FieldByName('BFName').Value:=Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmGYSFPInPutWGL.v1Column4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmGYSSelList:=TfrmGYSSelList.Create(Application); with frmGYSSelList do begin if ShowModal=1 then begin with Self.Order_Sub do begin edit; FieldByName('FactoryNo').Value:=Trim(frmGYSSelList.Order_Main.fieldbyname('ZKID').AsString) ; FieldByName('FactoryName').Value:=Trim(frmGYSSelList.Order_Main.fieldbyname('KHName').AsString); FieldByName('XHDanWei').Value:=Trim(frmGYSSelList.Order_Main.fieldbyname('KHName').AsString); //Post; end; end; end; finally frmGYSSelList.Free; end; end; end.