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

📄 upayment.pas

📁 天涯進銷存系統
💻 PAS
📖 第 1 页 / 共 3 页
字号:
          //收款金额
          dmData.sdsPublic.Edit;
          dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
          dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
          BillBodyData.Fieldbyname('CURRENTSUM').asFloat;
          //如果有折扣金额
          if (BillBodyData.RecordCount=BillBodyData.RecNo)
          and (AgioSum>0) then
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat:=
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat+AgioSum;
          if (dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat)>=
             dmData.sdsPublic.FieldByName('TOTALSUM').asFloat then
          begin
            dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
            dmData.sdsPublic.FieldByName('TOTALSUM').asFloat-
            dmData.sdsPublic.FieldByName('AGIOSUM').asFloat;
            dmData.sdsPublic.FieldByName('ISACCEPT').asString:='1';
          end;
          dmData.sdsPublic.ApplyUpdates(-1);
        end;
        BillBodyData.Next; 
      end;
      s:='Update Filialeinfo Set OUTPUTSUM=OUTPUTSUM-'+
         FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat+DBCurrencyEdit.Value)+
         ' where FilialeCode='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
    end
    else
    if BillHandData.FieldByName('BillModelCode').asString='1' then
    begin
      while not BillBodyData.Eof do
      begin
        s:='select BILLCODE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
           ' ISACCEPT From REIMBURSEBILLHAND where BILLCODE='+
           #39+Trim(BillBodyData.FieldByName('PAYBILLCODE').asstring)+#39;
        OpenData(s, dmData.sdsPublic);
        if not dmData.sdsPublic.IsEmpty then
        begin
          //付款金额
          dmData.sdsPublic.Edit;
          dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
          dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
          BillBodyData.Fieldbyname('CURRENTSUM').asFloat;
          //如果有折扣金额
          if (BillBodyData.RecordCount=BillBodyData.RecNo)
          and (AgioSum>0) then
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat:=
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat+AgioSum;
          if (dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
              dmData.sdsPublic.FieldByName('AGIOSUM').asFloat)>=
             dmData.sdsPublic.FieldByName('TOTALSUM').asFloat then
          begin
            dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
            dmData.sdsPublic.FieldByName('TOTALSUM').asFloat-
            dmData.sdsPublic.FieldByName('AGIOSUM').asFloat;
            dmData.sdsPublic.FieldByName('ISACCEPT').asString:='1';
          end;
          dmData.sdsPublic.ApplyUpdates(-1);
        end;
        BillBodyData.Next;
      end;
      s:='Update ClientInfo Set REIMBURSESUM=REIMBURSESUM-'+
         FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat+DBCurrencyEdit.Value);
      //如果有使用预付款,则减预收金额
      if Application.MessageBox('是否把本次所付的退货款转成预收款?',Hintinfo,$24)=idYes then
      begin
        s:=s+',PREPAYSUM=PREPAYSUM+'+FloatToStr(BillHandData.FieldByName('TOTALSUM').asFloat);
        BillHandData.Edit;
        BillHandData.Fieldbyname('Memo').asstring:='本次所付的退货款转成预收款。'+
        BillHandData.Fieldbyname('Memo').asstring;
        BillHandData.Fieldbyname('PAYMENTWHITHER').asstring:='1';
      end;
      //未收金额
      s:=s+', PAYMENTSUM=ARREARAGESUM-PREPAYSUM-REIMBURSESUM '+
         'where Code='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
    end
    else
    if BillHandData.FieldByName('BillModelCode').asString='2' then
    begin
      s:='Update ProviderInfo Set PREPAYSUM=PREPAYSUM+'+
         FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat)+
         ', PAYMENTSUM=ARREARAGESUM-PREPAYSUM-REIMBURSESUM '+
         'where Code='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
    end;
    with dmData.SQLQuery do
    begin
      Close;
      SQL.Text:=S;
      ExecSQL;
    end;
    BillHandData.ApplyUpdates(-1);
    Auditing.Visible:=True;
    BillHandData.ReadOnly:=True;
    Application.MessageBox('审核提交数据成功。',Hintinfo,$30);
    BillBodyData.First;
  except
    Application.MessageBox('审核单据不成功。',Errorinfo,$10);
  end;
end;

procedure TfrmPayment.FormShow(Sender: TObject);
begin
  SetView;
  isStateEdit:=False;
  OpenData('Select * from PayMentHand where BillType='''+'2'''+'  Order by BillCode DESC',BillHandData);
end;

procedure TfrmPayment.FormActivate(Sender: TObject);
begin
  GetWindowsItem(Caption, Self);
end;

procedure TfrmPayment.FormDestroy(Sender: TObject);
begin
  WindowItem.Delete(WindowItem.IndexOfObject(Self));
  BillHandData.Close;
  BillBodyData.Close;
end;

procedure TfrmPayment.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
  frmPayment:=Nil;
end;

procedure TfrmPayment.BillHandDataAfterScroll(DataSet: TDataSet);
begin
  OpenData('select * from PayMentBody  where BillCode='+#39+
           BillHandData.Fieldbyname('BillCode').asstring+#39,
           BillBodyData);
  PayTypeView;
  if BillHandData.FieldByName('isAuditing').AsString='1' then
    Auditing.Visible:=True
  else
    Auditing.Visible:=False;
end;

procedure TfrmPayment.LBEditButton1Click(Sender: TObject);
begin
  if not isStateEdit then Exit;
  OpposingCode:=BillHandData.FieldByName('OtherUnitCode').asstring;
  case AcceptBillModel of
  0,2:
    SelectProvider;
  1:
    SelectClient;
  end;
  if OpposingCode<>'' then
  begin
    BillHandData.Edit;
    BillHandData.FieldByName('OtherUnitCode').asstring :=OpposingCode;
    OtherUnitDBEdit.Text:=OpposingCode;
    CURRENTSUMEdit.SetFocus;
  end;  
end;

procedure TfrmPayment.Action1Execute(Sender: TObject);
begin
  SelectBillType:=1;
  SelectPaymentType;
  if isSelectPayMentModel=False then Exit;
  AcceptBillModel:=PayMentType;
  SetView;
  FilialeinfoName.Visible:=False;
  OTHERUNITDBEdit.Visible:=True;
  OtherUnitDBEdit.SetFocus;
  OtherUnitDBEdit.DataField:='OtherUnitCode';
  BillBodyData.ReadOnly:=False;
  BillHandData.ReadOnly:=False;
  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;
  PayTypeView;
  isEdit:=False;
  isStateEdit:=True;
  Sum:=0;
  BillInfoLabel.Caption:='';
  OldOtherUnitCode:='';
end;

procedure TfrmPayment.Action2Execute(Sender: TObject);
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可修改的付款单。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').asstring='1' then
  begin
    Application.MessageBox('此付款单已审核,不可修改。',Hintinfo,$30);
    Exit;
  end;
  SetView;
  OtherUnitDBEdit.SetFocus;
  OtherUnitDBEdit.DataField:='OtherUnitCode';
  OldOtherUnitCode:=Trim(OtherUnitDBEdit.Text);
  try
    BillHandData.ReadOnly:=False;
    BillBodyData.ReadOnly:=False;
    BillHandData.Edit;
    BillBodyData.Edit;
  except
    SetView;
    Application.MessageBox('修改数据错误。',Hintinfo,$10);
    OtherUnitDBEdit.DataField:='OtherUnitName';
    Exit;
  end;
  Sum:=BillHandData.FieldByName('TOTALSUM').AsFloat;
  AcceptBillModel:=BillHandData.FieldByName('BILLMODELCODE').asInteger;
  isEdit:=True;
  isStateEdit:=True;
end;

procedure TfrmPayment.Action3Execute(Sender: TObject);
var
  BillCode: string;
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可删除的付款单。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').asstring='1' then
  begin
    Application.MessageBox('此付款单已审核,不可删除。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定在要删除当前付款单吗?',Hintinfo,$24)=idYes then
  begin
    BillHandData.ReadOnly:=False;
    BillCode:=BillHandData.Fieldbyname('BillCode').asstring;
    try
      BillHandData.Delete;
      BillHandData.ApplyUpdates(-1);
      DeleteBillBody('Delete From PayMentBody where BillCode='+#39+BillCode+#39);
      OpenData('select * from PayMentHand Order by BillCode DESC',
               BillHandData);
    except
      Application.MessageBox('删除数据不成功。',Errorinfo,$10);
    end;
    BillHandData.ReadOnly:=True;
  end;
end;

procedure TfrmPayment.Action4Execute(Sender: TObject);
begin
  PrintView('RepPayment'+BillHandData.Fieldbyname('BILLMODELCODE').asstring+
            '.frf', Report);
end;

procedure TfrmPayment.Action5Execute(Sender: TObject);
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可审核的单据。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').AsString='1' then
  begin
    Application.MessageBox('此单据已审核。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定要审核此付款单吗?',Hintinfo,$24)=idYes then
     SetAuditing;
end;

procedure TfrmPayment.Action6Execute(Sender: TObject);
var
  sql: string;
begin
  SelectBillCode:='';
  OpposingCode:=BillHandData.Fieldbyname('OTHERUNITCODE').asstring;
  frmSelectPayment:=TfrmSelectPayment.Create(Application);
  frmSelectPayment.ShowModal;
  frmSelectPayment.Free; 
  if  SelectBillCode<>'' then
  begin
    sql:='Select * from PayMentHand where'+
         ' BillCode='+#39+SelectBillCode+#39+
         'Order by BillCode DESC';
    OpenData(sql,BillHandData);
  end;
end;

procedure TfrmPayment.Action7Execute(Sender: TObject);
begin
  OpenData('select * from PayMentHand where BillType='''+'2'''+' Order by BillCode DESC',BillHandData);
end;

procedure TfrmPayment.Action8Execute(Sender: TObject);
var
  i:integer;
  AGIOSUM, DelSum: Extended;
begin
  i:=0;
  DelSum:=0;
  DBCtrlGrid.SetFocus;
  Sum:=BillHandData.FieldbyName('CANUSESUM').asFloat;
  AGIOSUM:=BillHandData.FieldbyName('AGIOSUM').asFloat;
  if BillHandData.FieldByName('OTHERUNITCODE').AsString='' then
  begin
    Application.MessageBox('对方单位不能为空,请输入。',Hintinfo,$30);
    OTHERUNITDBEdit.SetFocus;
    Exit;
  end;
  if BillHandData.FieldByName('BillDate').AsString='' then
  begin
    Application.MessageBox('付款日期不能为空,请输入。',Hintinfo,$30);
    BillDateDBEdit.SetFocus;
    Exit;
  end;
  if Sum<=0 then
  begin
    Application.MessageBox('本次付款金额为零,不可保存。',Hintinfo, $30);
    CURRENTSUMEdit.SetFocus;
    Exit; 
  end;
  if not isEdit then
  begin
    BillHandData.Edit;
    BillHandData.Fieldbyname('BILLCode').asstring:=ComDepotCode+'-'+'FK'+'-'+
          GetBillID('42', BillHandData.Fieldbyname('BILLDATE').asstring);
    BillHandData.Fieldbyname('BILLMODELCODE').asInteger:=AcceptBillModel;
  end;
  if AcceptBillModel<>2 then
  begin
    if BillHandData.FieldByName('BALANCE').AsFloat>0 then
    begin
      if (AcceptBillModel=0) then
      begin
        if Application.MessageBox('余额是否转为预付款?',Hintinfo,$24)=idYes then
        begin
          BillHandData.FieldByName('BALANCEWHITHER').AsString:='转预付款';
          BillHandData.Fieldbyname('ISBALANCETO').asstring:='1';
        end
        else
          BillHandData.FieldByName('BALANCEWHITHER').AsString:='找零'
      end
      else
        BillHandData.FieldByName('BALANCEWHITHER').AsString:='找零';
    end
    else
      BillHandData.FieldByName('BALANCEWHITHER').AsString:='无';
    BillBodyData.Edit;
    BillBodyData.Post;
    with BillBodyData do
    begin
      First;
      while not Eof do
      begin
        if Fieldbyname('PAYBILLCODE').asstring<>'' then
        begin
          Edit;
          Fieldbyname('ID').asinteger:=i+1;
          Fieldbyname('BILLCode').asstring:=BillHandData.Fieldbyname('BILLCode').asstring;
          if Sum>0 then
          begin
            if Fieldbyname('OUGHTPAYSUM').asfloat<=Sum+AGIOSUM then
            begin
              Fieldbyname('CURRENTSUM').asfloat:=
              Fieldbyname('OUGHTPAYSUM').asfloat-AGIOSUM;
              Fieldbyname('ISPAYSUM').asString:='True';
              Sum:=Sum-Fieldbyname('OUGHTPAYSUM').asfloat;
            end
            else
            begin
              Fieldbyname('CURRENTSUM').asfloat:=Sum;
              Fieldbyname('ISPAYSUM').asString:='False';
              Sum:=0;
            end;
            i:=i+1;
            Next;
          end
          else

⌨️ 快捷键说明

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