⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upayment.pas

📁 天涯進銷存系統
💻 PAS
📖 第 1 页 / 共 3 页
字号:
          begin
            DelSum:=DelSum+BillBodyData.Fieldbyname('OUGHTPAYSUM').AsFloat;
            Delete;
            if BillBodyData.RecNo=BillBodyData.RecordCount  then
            Next;
          end;
        end
        else
        begin
          DelSum:=DelSum+BillBodyData.Fieldbyname('OUGHTPAYSUM').AsFloat;
          Delete;
          if BillBodyData.RecNo=BillBodyData.RecordCount  then
          Next;
        end;
      end;
    end;
  end;
  Try
    BillHandData.Edit;
    BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=
    BillHandData.Fieldbyname('PAYTOTALSUM').asFloat-DelSum;
    BillBodyData.ApplyUpdates(-1);
    BillHandData.ApplyUpDates(-1);
    Application.MessageBox('保存数据成功。',Hintinfo,$30);
    if Application.MessageBox('是否现在审核单据(审核后单据不可修改)?',Hintinfo, $24)=idYes then
       SetAuditing;
  except
    Application.MessageBox('保存数据错误。',Errorinfo,$10);
    BillBodyData.CancelUpdates;
    BillHandData.CancelUpdates;
  end;
  BillBodyData.First;
  Sum:=0;
  isStateEdit:=False;
  SetView;
  BillBodyData.ReadOnly:=True;
  BillHandData.ReadOnly:=True;
end;

procedure TfrmPayment.Action9Execute(Sender: TObject);
begin
  DBCtrlGrid.SetFocus;
  BillBodyData.CancelUpdates;
  BillHandData.CancelUpdates;
  BillBodyData.First;
  Sum:=0;
  isStateEdit:=False;
  SetView;
  BillBodyData.ReadOnly:=True;
  BillHandData.ReadOnly:=True;
end;

procedure TfrmPayment.OTHERUNITDBEditEnter(Sender: TObject);
begin
  if isStateEdit then
  begin
    OtherUnitDBEdit.DataField:='OtherUnitCode';
    OldOtherUnitCode:=Trim(OtherUnitDBEdit.Text);
  end;
end;

procedure TfrmPayment.OTHERUNITDBEditExit(Sender: TObject);
var
  s: string;
begin
  case AcceptBillModel of
  0,2:
    s:='select Code, ProviderName, PREPAYSUM from Providerinfo where Code='+
        #39+Trim(OtherUnitDBEdit.Text)+#39;
  1:
    s:='select Code, ClientName, PREPAYSUM From ClientInfo where Code='+
       #39+Trim(OtherUnitDBEdit.Text)+#39;
  end;
  if (Trim(OtherUnitDBEdit.Text)<>'') and (isStateEdit) and
     (Trim(OtherUnitDBEdit.Text)<>OldOtherUnitCode) then
  begin
    OpenData(s, dmData.sdsPublic);
    if dmData.sdsPublic.IsEmpty then
    begin
      Application.MessageBox(PChar('没有编号为“'+Trim(OtherUnitDBEdit.Text)+
                             '”的对方单位,请重新输入。'),Hintinfo, $30);
      BillHandData.Edit;              
      BillHandData.FieldByName('OtherUnitCode').asstring:=OldOtherUnitCode;
      OtherUnitDBEdit.SetFocus;
      Exit;
    end;
    BillHandData.Edit;
    BillHandData.FieldByName('OtherUnitName').asstring:=
       dmData.sdsPublic.Fields[1].AsString;
    BillHandData.FieldByName('PREPAYSUM').asfloat:=
       dmData.sdsPublic.Fields[2].asFloat;
    Sum:=0;
    //如果是预付款则退出
    if AcceptBillModel<>2 then
    begin
      BillBodyData.CancelUpdates; 
      BillHandData.FieldByName('PAYTOTALSUM').AsFloat:=0;
      BillHandData.FieldByName('TOTALSUM').AsFloat:=0;
      BillHandData.FieldByName('BIGSUM').AsString:='';
      //查找所有未付款的单据
      case AcceptBillModel of
      0:
        s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
           ' ISACCEPT From PARTSINPUTHAND where PROVIDERCODE='+
           #39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
           ' and ISACCEPT='''+'0'''+' and ISAUDITING='''+'1'''+
           ' and InPutType='''+'3'''+' Order by BillCode DESC';
      1:
        s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
           ' ISACCEPT  From REIMBURSEBILLHAND where PROVIDERCODE='+
            #39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
           ' and isAccept='''+'0'''+' and ISAUDITING='''+'1'''+' Order by BillCode DESC';
      end;
      OpenData(s, dmData.sdsPublic);
      while not dmData.sdsPublic.Eof do
      begin
        BillBodyData.Append; 
        BillBodyData.FieldByName('BillCode').asstring:='新单据';
        BillBodyData.Fieldbyname('ID').asInteger:=BillBOdyData.RecordCount+1;
        BillBodyData.Fieldbyname('PAYBILLCODE').asString:=
        dmData.sdsPublic.Fieldbyname('BillCode').asString;
        BillBodyData.Fieldbyname('PAYBILLDATE').asDateTime:=
        dmData.sdsPublic.Fieldbyname('BILLDATE').asDateTime;

        //总金额
        BillBodyData.Fieldbyname('PAYTOTALSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat;
        //已收金额
        BillBodyData.Fieldbyname('ALREADYPAYSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat;
        //应收金额
        BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat-
        dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat-
        dmData.sdsPublic.Fieldbyname('AGIOSUM').asFloat;
        BillBodyData.Fieldbyname('ISPAYSUM').asString:='False';
        ISPAYSUMCheck.Checked:=False;
        Sum:=Sum+BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat;
        dmData.sdsPublic.Next;
      end;
      BillHandData.Edit;
      BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=Sum;
      GetSum;
    end;
  end
  else
  if (Trim(OTHERUNITDBEdit.Text)='') and
     (Trim(OtherUnitDBEdit.Text)<>OldOtherUnitCode) then
  begin
    BillHandData.CancelUpdates;
    BillBodyData.CancelUpdates;
    BillHandData.Append;
    BillHandData.Fieldbyname('BillCode').asstring:='新单据';
    BillHandData.FieldByName('Operator').asstring:=UserName;
    BillHandData.Fieldbyname('BILLDATE').asDateTime:=Date;
    BillHandData.Fieldbyname('BILLMODEL').asstring:=PayMentModel;
    BillHandData.FieldByName('PayType').asstring:='现金';
    BillHandData.Fieldbyname('BILLTYPE').asstring:='2';
    BillHandData.FieldByName('ISUSEPREPAYSUM').asstring:='False';
    isPREPAYSUMCheck.Checked:=False;
    Sum:=0;
    OldOtherUnitCode:='';
  end;
  OtherUnitDBEdit.DataField:='OtherUnitName';
end;

procedure TfrmPayment.OTHERUNITDBEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and( Key=13) then
  begin
    LBEditButton1Click(Nil);
    Exit;
  end;
  if key=13 then  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmPayment.LBEditButton2Click(Sender: TObject);
begin
  if not isStateEdit then Exit;
  GetXoY(LBEditButton2);
  if BillHandData.Fieldbyname('BillDate').asDateTime>0 then
    sDate:=BillHandData.Fieldbyname('BillDate').asDateTime
  else
    sDate:=Date;
  SelectDate;
  BillHandData.Edit;
  BillHandData.FieldByName('BillDate').AsDateTime:=SDate;
end;

procedure TfrmPayment.BillDateDBEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Key=13) then
  begin
    LBEditButton2Click(Nil);
    Exit;
  end;
  if key=13 then  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmPayment.CurrentsumEditExit(Sender: TObject);
begin
  if isStateEdit=False then Exit;
  if CurrentsumEdit.Value<0 then
  begin
    Application.MessageBox('付款金额不能小于零。',Hintinfo,$30);
    DBCtrlGrid.SetFocus;
    CurrentsumEdit.SetFocus;
    Exit;
  end;
  BillHandData.Edit;
  if AcceptBillModel=2 then
  begin
    BillHandData.FieldByName('CANUSESUM').asFloat:=CurrentsumEdit.Value;
    BillHandData.FieldByName('TOTALSUM').asFloat:=
      BillHandData.FieldByName('CURRENTSUM').asFloat;
    BillHandData.FieldByName('BigSum').asstring:=
    SumSmallTOBig(BillHandData.FieldByName('TotalSum').Asfloat);
    Exit;
  end;
  GetSum;
end;

procedure TfrmPayment.CurrentsumEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=13 then  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmPayment.DBCurrencyEditExit(Sender: TObject);
begin
  if isStateEdit=False Then Exit;
  if (BillHandData.FieldByName('CANUSESUM').asFloat-
     BillHandData.FieldByName('PAYTOTALSUM').asFloat>=0)
     and (DBCurrencyEdit.Value>0) then
  begin
    Application.MessageBox('不存在让利金额。',Hintinfo,$30);
    BillHandData.FieldByName('AGIOSUM').asFloat:=0;
    Exit;
  end;
  if DBCurrencyEdit.Value>MaxAGIOSUM then
  begin
    Application.MessageBox('让利金额不可超出最大让利金额。',Hintinfo, $30);
    DBCtrlGrid.SetFocus;
    DBCurrencyEdit.SetFocus;
    Exit;
  end;
  if (DBCurrencyEdit.Value>BillHandData.FieldByName('PAYTOTALSUM').asFloat-
     BillHandData.FieldByName('CANUSESUM').asFloat)
     and (DBCurrencyEdit.Value>0) then
  begin
    Application.MessageBox('让利金额不可大于未收金额。',Hintinfo,$30);
    BillHandData.FieldByName('AGIOSUM').asFloat:=
      BillHandData.FieldByName('PAYTOTALSUM').asFloat-
      BillHandData.FieldByName('CANUSESUM').asFloat;
    DBCtrlGrid.SetFocus;
    DBCurrencyEdit.SetFocus;
    Exit;
  end;
end;

procedure TfrmPayment.isPrepaySumCheckClick(Sender: TObject);
begin
  if isStateEdit then GetSum;
end;

procedure TfrmPayment.BillNextButtonClick(Sender: TObject);
begin
  if isStateEdit then Exit;
  BillHandData.Next;
  if BillHandData.RecNo=1 then
    BillHandData.Next; 
  if BillHandData.RecordCount=BillHandData.RecNo then
  begin
    if BillHandData.GetNextPacket=0 then
      BillInfoLabel.Caption:='已经是移到第一张单据了!'
    else
      BillInfoLabel.Caption:='';
    BillHandData.Next;
  end
  else
    BillInfoLabel.Caption:='';
end;

procedure TfrmPayment.BillPriorButtonClick(Sender: TObject);
begin
  if isStateEdit then Exit;
  BillHandData.Prior;
  if BillHandData.RecNo=1 then
    BillHandData.Prior;
  if BillHandData.Bof then
    BillInfoLabel.Caption:='已经是移到最后一张单据了!'
  else
    BillInfoLabel.Caption:='';
end;

procedure TfrmPayment.FilialeinfoNameChange(Sender: TObject);
begin
  if isStateEdit then CurrentsumEdit.SetFocus;
end;

procedure TfrmPayment.FilialeinfoNameDropDown(Sender: TObject);
begin
  if Not isStateEdit then  Exit;
  OldOtherUnitCode:=Trim(FilialeinfoName.Text);
  SetIndexListData('select FilialeCode, FilialeName From FilialeInfo', FilialeinfoName, 'FilialeCode','FilialeName');
end;

procedure TfrmPayment.FilialeinfoNameExit(Sender: TObject);
var
  s: string;
begin
  if not isStateEdit then Exit;
  if (Trim(FilialeinfoName.Text)<>'')
  and (Trim(FilialeinfoName.Text)<> OldOtherUnitCode) and
  (FilialeinfoName.Items.Count>0)    then
  begin
    TObject(List):=FilialeinfoName.Items.Objects[FilialeinfoName.ItemIndex];
    BillHandData.Edit;
    BillHandData.FieldByName('OtherUnitCode').asstring:=List.Code;
    Sum:=0;
    //如果是预付款则退出
    if AcceptBillModel<>2 then
    begin
      BillBodyData.CancelUpdates; 
      BillHandData.FieldByName('PAYTOTALSUM').AsFloat:=0;
      BillHandData.FieldByName('TOTALSUM').AsFloat:=0;
      BillHandData.FieldByName('BIGSUM').AsString:='';
      //查找所有未收款的单据
      if AcceptBillModel=3 then
         s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
            ' ISACCEPT From PARTSINPUTHAND where PROVIDERCODE='+
            #39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
            ' and isAccept='''+'0'''+' and ISAUDITING='''+'1'''+
            ' and InPutType='''+'4'''+' Order by BillCode DESC';
      OpenData(s, dmData.sdsPublic);
      while not dmData.sdsPublic.Eof do
      begin
        BillBodyData.Append; 
        BillBodyData.FieldByName('BillCode').asstring:='新单据';
        BillBodyData.Fieldbyname('ID').asInteger:=BillBOdyData.RecordCount+1;
        BillBodyData.Fieldbyname('PAYBILLCODE').asString:=
        dmData.sdsPublic.Fieldbyname('BillCode').asString;
        BillBodyData.Fieldbyname('PAYBILLDATE').asDateTime:=
        dmData.sdsPublic.Fieldbyname('BILLDATE').asDateTime;

        //总金额
        BillBodyData.Fieldbyname('PAYTOTALSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat;
        //已收金额
        BillBodyData.Fieldbyname('ALREADYPAYSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat;
        //应收金额
        BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat:=
        dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat-
        dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat-
        dmData.sdsPublic.Fieldbyname('AGIOSUM').asFloat;
        BillBodyData.Fieldbyname('ISPAYSUM').asString:='False';
        ISPAYSUMCheck.Checked:=False;
        Sum:=Sum+BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat;
        dmData.sdsPublic.Next;
      end;
      BillHandData.Edit;
      BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=Sum;
      GetSum;
    end;
  end;
end;

procedure TfrmPayment.FilialeinfoNameKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=13 then  CurrentsumEdit.SetFocus;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -