unit U_WXFPInPut; 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; type TfrmWXFPInPut = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ADOTemp: TADOQuery; ADOCmd: TADOQuery; DataSource1: TDataSource; Order_Sub: TClientDataSet; DataSource2: TDataSource; ADOZDY: TADOQuery; CDS_ZDY: TClientDataSet; ADOQuery1: TADOQuery; cxGridPopupMenu1: TcxGridPopupMenu; ToolButton3: TToolButton; ToolButton4: TToolButton; ClientDataSet1: TClientDataSet; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column6: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column12: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Panel1: TPanel; Label1: TLabel; FPNO: TEdit; Label2: TLabel; FPDate: TDateTimePicker; ChengJiaoType: TBtnEditA; Label3: TLabel; FromPlace: TBtnEditA; Label4: TLabel; ToPlace: TBtnEditA; Label5: TLabel; BankName: TBtnEditA; Label6: TLabel; Label7: TLabel; GHDanWei: TEdit; Label8: TLabel; XHDanWei: TEdit; Label9: TLabel; XYZNO: TEdit; v1Column4: TcxGridDBColumn; v1Column5: TcxGridDBColumn; 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 ChengJiaoTypeBtnClick(Sender: TObject); procedure FromPlaceBtnClick(Sender: TObject); procedure ToPlaceBtnClick(Sender: TObject); procedure BankNameBtnClick(Sender: TObject); 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 frmWXFPInPut: TfrmWXFPInPut; implementation uses U_DataLink,U_ZDYHelp,U_RTFun,U_ZDYHelpSel,U_BGHZSelList; {$R *.dfm} procedure TfrmWXFPInPut.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('外销发票录入',Tv1,'发票管理'); end; procedure TfrmWXFPInPut.InitData(); begin with ADOQuery1 do begin Close; SQL.Clear; sql.Add(' select A.*,B.* '); SQL.Add(' from FP_XiaoShou A'); sql.Add(' inner join FP_XiaoShou_Sub B on A.FXID=B.FXID'); sql.Add(' where A.FXID='''+Trim(FMainId)+''''); Open; end; SCreateCDS20(ADOQuery1,Order_Sub); SInitCDSData20(ADOQuery1,Order_Sub); SCSHDataNew(ADOQuery1,Panel1,0); end; procedure TfrmWXFPInPut.ZDYHelp(FButn:TcxButtonEdit;LType:string); begin end; procedure TfrmWXFPInPut.FormShow(Sender: TObject); begin ReadCxGrid('外销发票录入',Tv1,'发票管理'); FPDate.DateTime:=SGetServerDate(ADOTemp); InitData(); end; procedure TfrmWXFPInPut.GetMaxConNO(); begin end; function TfrmWXFPInPut.SaveData():Boolean; var maxno,maxsubNo:String; begin try Result:=False; ADOCmd.Connection.BeginTrans; //保存主表 if Trim(FMainId)='' then begin if GetLSNo(ADOCmd,maxno,'FX','FP_XiaoShou',3,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 FP_XiaoShou where FXID='''+Trim(FMainId)+''''); Open; end; with ADOCmd do begin if Trim(FMainId)='' then begin Append; end else begin Edit; end; FieldByName('FXID').Value:=Trim(maxno); RTSetsavedata(ADOCmd,'FP_XiaoShou',Panel1,0); if Trim(FMainId)='' then begin FieldByName('Filler').Value:=Trim(DName); end else begin FieldByName('Editer').Value:=Trim(DName); FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp); end; // FieldByName('Note').Value:=Trim(Note.Text); Post; end; with ADOCmd do begin Close; sql.Clear; sql.Add('select * from FP_XiaoShou where FPNo='''+Trim(FPNo.Text)+''''); Open; end; if ADOCmd.RecordCount>1 then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('发票号重复!','提示',0); Exit; end; Order_Sub.DisableControls; with Order_Sub do begin First; while not Eof do begin if Trim(Order_Sub.fieldbyname('FSID').AsString)='' then begin if GetLSNo(ADOCmd,maxsubNo,'FS','FP_XiaoShou_Sub',4,1)=False then begin Order_Sub.EnableControls; ADOCmd.Connection.RollbackTrans; Application.MessageBox('取规则流水号失败!','提示',0); Exit; end; end else begin maxsubNo:=Trim(Order_Sub.fieldbyname('FSID').AsString); end; with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from FP_XiaoShou_Sub where FSID='''+Trim(Order_Sub.fieldbyname('FSID').AsString)+''''); Open; end; with ADOCmd do begin if Trim(Order_Sub.fieldbyname('FSID').AsString)='' then begin Append; end else begin Edit; end; FieldByName('FXID').Value:=Trim(maxno); FieldByName('FSID').Value:=Trim(maxsubNo); FieldByName('BGID').Value:=Order_Sub.fieldbyname('BGID').Value; FieldByName('BCID').Value:=Order_Sub.fieldbyname('BCID').Value; FieldByName('NQID').Value:=Order_Sub.fieldbyname('NQID').Value; RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'FP_XiaoShou_Sub',0) ; Post; end; Edit; FieldByName('FSID').Value:=Trim(maxsubNo); Next; end; end; Order_Sub.EnableControls; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmWXFPInPut.TBSaveClick(Sender: TObject); var FPPrice,PRTPrice,BCMoney,FPQty,ChaMoney:string; begin ToolBar1.SetFocus; if Trim(FPNO.Text)='' then begin Application.MessageBox('发票号不能为空!','提示',0); Exit; end; if Trim(GHDanWei.Text)='' then begin Application.MessageBox('购货单位不能为空!','提示',0); Exit; end; if Trim(XHDanWei.Text)='' then begin Application.MessageBox('销货单位不能为空!','提示',0); Exit; end; if Order_Sub.IsEmpty 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 SaveData() then begin Application.MessageBox('保存成功!','提示',0); ModalResult:=1; end; end; procedure TfrmWXFPInPut.ToolButton3Click(Sender: TObject); var FSQDate,FGHDanWei,FXHDanWei:string; begin FSQDate:=Trim(FormatDateTime('yyyy-MM-dd',SGetServerDate(ADOTemp))); try frmBGHZSelList:=TfrmBGHZSelList.Create(Application); with frmBGHZSelList do begin if ShowModal=1 then begin with frmBGHZSelList.CDS_HZ do begin First; while not Eof do begin if frmBGHZSelList.CDS_HZ.FieldByName('SSel').AsBoolean=True then begin if frmBGHZSelList.CDS_HZ.FieldByName('WXFPMoney').Value=0 then begin FGHDanWei:=Trim(frmBGHZSelList.CDS_HZ.fieldbyname('KHName').AsString); FXHDanWei:=Trim(frmBGHZSelList.CDS_HZ.fieldbyname('FPDanWei').AsString); with Self.Order_Sub do begin Append; FieldByName('BGId').Value:=frmBGHZSelList.CDS_HZ.FieldByName('BGId').Value; FieldByName('BCID').Value:=frmBGHZSelList.CDS_HZ.FieldByName('BCID').Value; FieldByName('NQID').Value:=frmBGHZSelList.CDS_HZ.FieldByName('NQID').Value; FieldByName('OrderNo').Value:=frmBGHZSelList.CDS_HZ.FieldByName('OrderNo').Value; FieldByName('BGName').Value:=frmBGHZSelList.CDS_HZ.FieldByName('BGName').Value; FieldByName('QtyUnit').Value:=frmBGHZSelList.CDS_HZ.FieldByName('NQUnit').Value; FieldByName('SGHDanWei').Value:=frmBGHZSelList.CDS_HZ.FieldByName('KHName').Value; FieldByName('SXHDanWei').Value:=frmBGHZSelList.CDS_HZ.FieldByName('FPDanWei').Value; if Trim(frmBGHZSelList.CDS_HZ.FieldByName('NQUnit').AsString)='M' then begin FieldByName('Qty').Value:=frmBGHZSelList.CDS_HZ.FieldByName('NQMQty').Value; end else begin FieldByName('Qty').Value:=frmBGHZSelList.CDS_HZ.FieldByName('NQkgQty').Value; end; FieldByName('Price').Value:=frmBGHZSelList.CDS_HZ.FieldByName('BGPrice').Value; FieldByName('Money').Value:=frmBGHZSelList.CDS_HZ.FieldByName('BGMoney').Value; FieldByName('FPDate').Value:=FSQDate; //Post; end; end; end; Next; end; end; end; end; finally frmBGHZSelList.Free; end; if Trim(GHDanWei.Text)='' then GHDanWei.Text:=Trim(FGHDanWei); if Trim(XHDanWei.Text)='' then XHDanWei.Text:=Trim(FXHDanWei); end; procedure TfrmWXFPInPut.ToolButton4Click(Sender: TObject); begin if Order_Sub.IsEmpty then Exit; if Trim(Order_Sub.fieldbyname('FSId').AsString)<>'' then begin if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; with ADOCmd do begin Close; sql.Clear; sql.Add('delete FP_XiaoShou_Sub where FSId='''+Trim(Order_Sub.fieldbyname('FSId').AsString)+''''); ExecSQL; end; end; Order_Sub.Delete; end; procedure TfrmWXFPInPut.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 TfrmWXFPInPut.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 TfrmWXFPInPut.ChengJiaoTypeBtnClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='ChengJiaoType'; flagname:='成交方式'; if ShowModal=1 then begin ChengJiaoType.Text:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmWXFPInPut.FromPlaceBtnClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='ChuKouKA'; flagname:='出口口岸'; if ShowModal=1 then begin FromPlace.Text:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmWXFPInPut.ToPlaceBtnClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YunDiG'; flagname:='运抵国'; if ShowModal=1 then begin ToPlace.Text:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmWXFPInPut.BankNameBtnClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='WXBankName'; flagname:='银行名称'; if ShowModal=1 then begin BankName.Text:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; end.