unit U_NBFPInPutWGLBCOrderNo;

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;

type
  TfrmNBFPInPutWGLBCOrderNo = class(TForm)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    ADOTemp: TADOQuery;
    ADOCmd: TADOQuery;
    DataSource1: TDataSource;
    Order_Sub: TClientDataSet;
    ADOZDY: TADOQuery;
    ADOQuery1: TADOQuery;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ClientDataSet2: TClientDataSet;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column9: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column18: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Panel1: TPanel;
    Panel2: TPanel;
    DataSource2: TDataSource;
    cxGridPopupMenu2: TcxGridPopupMenu;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridDBColumn9: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn11: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    ToolBar2: TToolBar;
    ToolButton2: TToolButton;
    ToolButton5: TToolButton;
    Panel3: TPanel;
    ToolButton1: TToolButton;
    ToolButton3: TToolButton;
    Label1: TLabel;
    BGOrderNo: TEdit;
    v1Column6: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    Panel4: TPanel;
    CheckBox1: TCheckBox;
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure v1Column3PropertiesEditValueChanged(Sender: TObject);
    procedure v1Column20PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column5PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column18PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure v2Column2PropertiesEditValueChanged(Sender: TObject);
  private
    procedure InitData();
    function  SaveData():Boolean;
    { Private declarations }
  public
    PState,PCopyInt:Integer;
    FMainId,FConNo,FConType,FYLType:String;

    { Public declarations }
  end;

var
  frmNBFPInPutWGLBCOrderNo: TfrmNBFPInPutWGLBCOrderNo;

implementation
uses
  U_DataLink,U_ZDYHelp,U_RTFun,U_GYSFPSelList;

{$R *.dfm}

procedure TfrmNBFPInPutWGLBCOrderNo.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('供应商发票录入',Tv1,'发票管理');
  WriteCxGrid('供应商发票录入2',Tv2,'发票管理');
end;

procedure TfrmNBFPInPutWGLBCOrderNo.InitData();
begin
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from FP_BGOrderNo where FNID='''+Trim(FMainId)+'''');
    Open;
  end;
  BGOrderNo.Text:=Trim(ADOQuery1.fieldbyname('BGOrderNo').AsString);
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from FP_GYSNB A');
    sql.Add(' where A.FNID='''+Trim(FMainId)+'''');
    sql.Add(' and isnull(FMType,'''')=''NB'' ');
    Open;
  end;
  SCreateCDS20(ADOQuery1,Order_Sub);
  SInitCDSData20(ADOQuery1,Order_Sub);
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add(' select A.*,B.HXQty,B.HXMoney,B.FHID ');
    SQL.Add(' from FP_GYSNB A');
    sql.Add(' inner join FP_Money_HX B on A.FMID=B.GYSFMID');
    sql.Add(' where B.FNID='''+Trim(FMainId)+'''');
    sql.Add(' and isnull(FMType,'''')=''GYS'' ');
    Open;
  end;
  SCreateCDS20(ADOQuery1,ClientDataSet2);
  SInitCDSData20(ADOQuery1,ClientDataSet2);
end;



procedure TfrmNBFPInPutWGLBCOrderNo.FormShow(Sender: TObject);
begin
  ReadCxGrid('供应商发票录入',Tv1,'发票管理');
  ReadCxGrid('供应商发票录入2',Tv2,'发票管理');
  InitData();
end;

function TfrmNBFPInPutWGLBCOrderNo.SaveData():Boolean;
var
  maxno,MaxNoFN,maxNoFH,FFHID:String;
begin
  try
    Result:=False;
    ADOCmd.Connection.BeginTrans;
    //保存报关订单号
    if Trim(FMainId)='' then
    begin
      if GetLSNo(ADOCmd,MaxNoFN,'FN','FP_BGOrderNo',4,1)=False then
      begin
        Order_Sub.EnableControls;
        ADOCmd.Connection.RollbackTrans;
        Application.MessageBox('取规则流水号失败!','提示',0);
        Exit;
      end;
    end else
    begin
      maxnoFN:=Trim(FMainId);
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from FP_BGOrderNo where FNID='''+Trim(FMainId)+'''');
      Open;
    end;
    with ADOCmd do
    begin
      if Trim(FMainId)='' then
      begin
        Append;
        FieldByName('Filler').Value:=Trim(DName);
      end else
      begin
        Edit;
        FieldByName('Editer').Value:=Trim(DName);
        FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp);
      end;
      FieldByName('FNID').Value:=Trim(MaxNoFN);
      FieldByName('BGOrderNo').Value:=Trim(BGOrderNo.Text);
      Post;
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from FP_BGOrderNo where BGOrderNo='''+Trim(BGOrderNo.Text)+'''');
      Open;
    end;
    if ADOCmd.RecordCount>1 then
    begin
      ADOCmd.Connection.RollbackTrans;
      Application.MessageBox('报关订单号重复!','提示',0);
      exit;
    end;
    //保存内部发票
    with Order_Sub do
    begin
      First;
      while not Eof do
      begin
        if Trim(Order_Sub.fieldbyname('FMID').AsString)='' 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(Order_Sub.fieldbyname('FMID').AsString);
        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(Order_Sub.fieldbyname('FMID').AsString)='' then
          begin
            Append;
          end
          else begin
            Edit;
          end;
          FieldByName('FMID').Value:=Trim(maxno);
          FieldByName('FNID').Value:=Trim(maxnoFN);
          FieldByName('FMType').Value:='NB';
          RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'FP_GYSNB',0) ;
          if Trim(Order_Sub.fieldbyname('FMID').AsString)='' 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,'''')=''NB'' ');
          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);
        Next;
      end;

    end;
    //供应商发票核销
    with ClientDataSet2 do
    begin
      First;
      while not Eof do
      begin
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from FP_Money_HX where ');
          sql.Add(' FNID='''+Trim(MaxNoFN)+'''');
          sql.Add(' and GYSFMID='''+Trim(ClientDataSet2.fieldbyname('FMID').AsString)+'''');
          Open;
        end;
        FFHID:=Trim(ADOTemp.fieldbyname('FHID').AsString);
        if Trim(FFHID)='' then
        begin
          if GetLSNo(ADOCmd,maxNoFH,'FH','FP_Money_HX',4,1)=False then
          begin
            ADOCmd.Connection.RollbackTrans;
            Application.MessageBox('取供应商发票核销流水号失败!','提示',0);
            Exit;
          end;
        end else
        begin
          maxNoFH:=Trim(FFHID);
        end;
        with ADOCmd do
        begin
          Close;
          sql.Clear;
          sql.Add(' select * from FP_Money_HX');
          sql.Add(' where FHID='''+Trim(FFHID)+'''');
          Open;
        end;
        with ADOCmd do
        begin
          if Trim(FFHID)='' then
          begin
            Append;
            FieldByName('Filler').Value:=Trim(DName);
          end else
          begin
            Edit;
            FieldByName('Editer').Value:=Trim(DName);
            FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp);
          end;
          FieldByName('FHID').Value:=Trim(maxNoFH);
          FieldByName('FNID').Value:=Trim(MaxNoFN);
          FieldByName('GYSFMID').Value:=Trim(ClientDataSet2.fieldbyname('FMID').AsString);
          FieldByName('HXQty').Value:=ClientDataSet2.fieldbyname('HXQty').Value;
          FieldByName('HXMoney').Value:=ClientDataSet2.fieldbyname('HXMoney').Value;
          FieldByName('Type').Value:='核销供应商发票';
          Post;
        end;

        with ADOCmd do
        begin
          Close;
          sql.Clear;
          SQL.Add(' Update FP_GYSNB Set ');
          sql.Add(' HXQty=(select sum(isnull(HXQty,0)) from FP_Money_HX A');
          sql.Add('        where A.GYSFMID=FP_GYSNB.FMID and A.Type=''核销供应商发票'')');
          sql.Add(' ,HXMoney=(select sum(isnull(HXMoney,0)) from FP_Money_HX A');
          sql.Add('        where A.GYSFMID=FP_GYSNB.FMID and A.Type=''核销供应商发票'')');
          sql.Add(' where FMID='''+Trim(ClientDataSet2.fieldbyname('FMID').AsString)+'''');
          ExecSQL;
        end;
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add(' select DHXMoney=A.Money-isnull(A.HXMoney,0)');
          sql.Add(',DHXQty=A.Qty-isnull(A.HXQty,0)');
          sql.Add(' from FP_GYSNB A');
          sql.Add(' where FMID='''+Trim(ClientDataSet2.fieldbyname('FMID').AsString)+'''');
          Open;
        end;
        if ADOTemp.FieldByName('DHXQty').Value<0 then
        begin
          ADOCmd.Connection.RollbackTrans;
          Application.MessageBox('核销数量大于发票数量!','提示',0);
          Exit;
        end;
        if ADOTemp.FieldByName('DHXMoney').Value<0 then
        begin
          ADOCmd.Connection.RollbackTrans;
          Application.MessageBox('核销金额大于发票金额!','提示',0);
          Exit;
        end;
        Edit;
        FieldByName('FHID').Value:=Trim(maxNoFH);
        Next;
      end;
      with ADOCmd do
      begin
        Close;
        sql.Clear;
        SQL.Add('delete from FP_Money_HX where isnull(HXQty,0)=0 and isnull(HXMoney,0)=0');
        sql.Add(' and FNID='''+Trim(MaxNoFN)+'''');
        sql.Add(' and Type=''核销供应商发票'' ');
        ExecSQL;
      end;
    end;
    ADOCmd.Connection.CommitTrans;
    FMainId:=Trim(MaxNoFN);
    Result:=True;
  except
    Result:=False;
    ADOCmd.Connection.RollbackTrans;
    Application.MessageBox('保存失败！','提示',0);
  end;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.TBSaveClick(Sender: TObject);
var
  FPPrice,PRTPrice,BCMoney,FPQty,ChaMoney:string;
begin
  ToolBar1.SetFocus;
  if Trim(BGOrderNo.Text)='' then
  begin
    Application.MessageBox('报关订单号不能为空!','提示',0);
    Exit;
  end;
  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('FPType',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('GHDanWei',null,[]) then
  begin
    Application.MessageBox('购货单位不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('XHDanWei',null,[]) then
  begin
    Application.MessageBox('进货单位不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('BGName',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 SaveData() then
  begin
    Application.MessageBox('保存成功！','提示',0);
    ModalResult:=1;
  end;

end;

procedure TfrmNBFPInPutWGLBCOrderNo.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 TfrmNBFPInPutWGLBCOrderNo.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 TfrmNBFPInPutWGLBCOrderNo.v1Column5PropertiesButtonClick(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('XHDanWei').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.v1Column18PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='BGName';
      flagname:='报关品名';
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('BGName').Value:=Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString);
          //Post;
        end;

      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.ToolButton2Click(Sender: TObject);
begin
  try
    frmGYSFPSelList:=TfrmGYSFPSelList.Create(Application);
    with frmGYSFPSelList do
    begin
      if ShowModal=1 then
      begin
        with frmGYSFPSelList.Order_Main do
        begin
          First;
          while Locate('SSel',True,[]) do
          begin
            if Self.ClientDataSet2.Locate('FMID',Trim(frmGYSFPSelList.Order_Main.fieldbyname('FMID').AsString),[])=False then
            begin
              with Self.ClientDataSet2 do
              begin
                Append;
                FieldByName('FMId').Value:=frmGYSFPSelList.Order_Main.FieldByName('FMId').Value;
                FieldByName('BCOrderNo').Value:=frmGYSFPSelList.Order_Main.FieldByName('BCOrderNo').Value;
                FieldByName('FPNO').Value:=frmGYSFPSelList.Order_Main.FieldByName('FPNO').Value;
                FieldByName('FPDate').Value:=frmGYSFPSelList.Order_Main.FieldByName('FPDate').Value;
                FieldByName('FactoryName').Value:=frmGYSFPSelList.Order_Main.FieldByName('FactoryName').Value;
                FieldByName('GHDanWei').Value:=frmGYSFPSelList.Order_Main.FieldByName('GHDanWei').Value;
                FieldByName('XHDanWei').Value:=frmGYSFPSelList.Order_Main.FieldByName('XHDanWei').Value;
                FieldByName('BFName').Value:=frmGYSFPSelList.Order_Main.FieldByName('BFName').Value;
                FieldByName('QtyUnit').Value:=frmGYSFPSelList.Order_Main.FieldByName('QtyUnit').Value;
                FieldByName('Qty').Value:=frmGYSFPSelList.Order_Main.FieldByName('Qty').Value;
                FieldByName('Price').Value:=frmGYSFPSelList.Order_Main.FieldByName('Price').Value;
                FieldByName('Money').Value:=frmGYSFPSelList.Order_Main.FieldByName('Money').Value;
                FieldByName('HXQty').Value:=frmGYSFPSelList.Order_Main.FieldByName('DHXQty').Value;
                FieldByName('HXMoney').Value:=frmGYSFPSelList.Order_Main.FieldByName('DHXMoney').Value;
                //Post;
              end;
            end;
            frmGYSFPSelList.Order_Main.Delete;

          end;
        end;
      end;
    end;
  finally
    frmGYSFPSelList.Free;
  end;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.ToolButton5Click(Sender: TObject);
begin
  if ClientDataSet2.IsEmpty then Exit;
  if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;
  with ADOCmd do
  begin
    Close;
    sql.Clear;
    SQL.Add('delete from FP_Money_HX  ');
    sql.Add(' where FHID='''+Trim(ClientDataSet2.fieldbyname('FHID').AsString)+'''');
    ExecSQL;
  end;
  with ADOCmd do
  begin
    Close;
    sql.Clear;
    SQL.Add(' Update FP_GYSNB Set ');
    sql.Add(' HXQty=(select sum(isnull(HXQty,0)) from FP_Money_HX A');
    sql.Add('        where A.GYSFMID=FP_GYSNB.FMID and A.Type=''核销供应商发票'')');
    sql.Add(' ,HXMoney=(select sum(isnull(HXMoney,0)) from FP_Money_HX A');
    sql.Add('        where A.GYSFMID=FP_GYSNB.FMID and A.Type=''核销供应商发票'')');
    sql.Add(' where FMID='''+Trim(ClientDataSet2.fieldbyname('FMID').AsString)+'''');
    ExecSQL;
  end;
  ClientDataSet2.Delete;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.ToolButton1Click(Sender: TObject);
begin
  if Order_Sub.IsEmpty=False then
  begin
    CopyAddRowCDS(Order_Sub);
  end else
  begin
    with Order_Sub do
    begin
      Append;
      FieldByName('FPType').Value:='报关';
      FieldByName('FPDate').Value:=SGetServerDate(ADOTemp);
      Post;
    end;
  end;
  with Order_Sub do
  begin
    Edit;
    FieldByName('FMID').Value:=Null;
    FieldByName('FPNO').Value:=Null;
    Post;
  end;

end;

procedure TfrmNBFPInPutWGLBCOrderNo.ToolButton3Click(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 from FP_GYSNB '); // Set HXMoney=Money,FNID=Null
      sql.Add(' where FMID='''+Trim(Order_Sub.fieldbyname('FMID').AsString)+'''');
      ExecSQL;
    end;
  end;
  Order_Sub.Delete;
end;

procedure TfrmNBFPInPutWGLBCOrderNo.v2Column2PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue,FQty,FPrice,FMoney,FName:String;
begin
  if CheckBox1.Checked=True then Exit;
  FName:=Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName;
  mvalue:=TcxTextEdit(Sender).EditingText;
  if Trim(mvalue)='' then mvalue:='0';
  with ClientDataSet2 do
  begin
    Edit;
    FieldByName(FName).Value:=mvalue;
    Post;
  end;
  FQty:=ClientDataSet2.fieldbyname('HXQty').AsString;
  FPrice:=ClientDataSet2.fieldbyname('Price').AsString;
  FMoney:=ClientDataSet2.fieldbyname('HXMoney').AsString;
  if Trim(FQty)='' then FQty:='0';
  if Trim(FPrice)='' then FPrice:='0';
  if Trim(FMoney)='' then FMoney:='0';
  if Trim(FName)<>'HXMoney' then
  begin
    with ClientDataSet2 do
    begin
      Edit;
      FieldByName('HXMoney').Value:=StrToFloat(FQty)*StrToFloat(FPrice);
      Post;
    end;
  end else
  begin
    if Trim(FPrice)<>'0' then
    begin
      with ClientDataSet2 do
      begin
        Edit;
        FieldByName('HXQty').Value:=StrToFloat(FMoney)*1.00/StrToFloat(FPrice);
        Post;
      end;
    end else
    begin
      with ClientDataSet2 do
      begin
        Edit;
        FieldByName('HXQty').Value:=Null;
        Post;
      end;
    end;
  end;
end;

end.
