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

📄 xssk.pas

📁 delphi作得信息业进销存源码.功能全面,运行稳定.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      end;
    //New Add
    if not blnHaveOld then
      with CurDs do
      begin
        CommandText := 'select * from XSKDZB ' +
          'where XSLX = 2 and KHID = ' + VarToStr(dsZb['KHID']) + ' and JE > YSJE ' +
          'order by ID';
        Open;
        while not Eof do
        begin
          intDDID := FieldByName('ID').AsInteger;
          dblJE := VarToFloat(GetFieldValue('select JE from XSSK ' +
            'where ZBID = ' + Float2Str(dsZb['ID']) + ' and ' +
            'DDID = ' + IntToStr(intDDID)));
          dsMx.Append;
          dsMx['DDID'] := FieldValues['ID'];
          dsMx['aDDBH'] := FieldValues['DJBH'];
          dsMx['aSKQX'] := FieldByName('RQ').AsDateTime + FieldByName('SKQX').AsInteger;
          dsMx['aDDJE'] := FieldValues['JE'];
          dsMx['aYSJE'] := FieldValues['YSJE'] - dblJE;
          dsMx['aMSJE'] := FieldValues['JE'] - FieldValues['YSJE'] + dblJE;
          dsMx['JE'] := dblJE;
          Next;
        end;
        dsMx.First;
        DBGrid1.SelectedIndex := DBGrid1.FieldCount - 1;
        Close;
      end;
    blnCanInsert := False;
  end;
  //SetJEABCD
  SetJEABCD;
  screen.Cursor := crDefault;
end;

procedure TfrmXssk.TotalField(Kind: char; Field: TField);
var
  dblJED, dblOld, dblNew: Double;
begin
  dblJED := Str2Float(labJED.Caption);
  dblOld := RoundPlus(arMx('JE'), 2);
  if Kind <> 'D' then
    dblNew := RoundPlus(dsMx['JE'], 2)
  else
    dblNew := 0;
  if Kind = 'E' then
    if (Field = nil) or (Pos(UpperCase(Field.FieldName) + ';', 'JE;') = 0) then
      Exit
    else
      arrMx[Field.Index] := dsMx[Field.FieldName];

  dsZb.Edit;
  case Kind of
    'E', 'C': dblJED := dblJED - dblOld + dblNew;
    'D':      dblJED := dblJED - dblOld;
  end;
  labJED.Caption := FormatFloat('#,0.00', dblJED);
  SetSKHYE;
end;

procedure TfrmXssk.sMxDataChange(Sender: TObject; Field: TField);
begin
  inherited;
  if (Field <> nil) and (TDataSource(Sender).State in [Dsinsert,Dsedit]) then
  begin
    if (UpperCase(Field.FieldName) = 'DDID') and (Field.AsString <> '') then
      with CurDs do
      begin
        CommandText := 'select * from XSKDZB where ID = ' + Field.AsString;
        Open;
        if not IsEmpty then
        begin
          dsMx['aDDBH'] := FieldValues['DJBH'];
          dsMx['aSKQX'] := FieldByName('RQ').AsDateTime + FieldByName('SKQX').AsInteger;
          dsMx['aDDJE'] := FieldValues['JE'];
          dsMx['aYSJE'] := FieldValues['YSJE'];
          dsMx['aMSJE'] := FieldValues['JE'] - FieldValues['YSJE'];
        end
        else
          DBGrid1EditButtonClick(nil);
        Close;
      end;
  end;
end;

//自动收款 所有
procedure TfrmXssk.aZdfkExecute(Sender: TObject);
var
  dblKYZJE: double;
begin
  dblKYZJE := Str2Float(labKYZJE.Caption);
  with dsMx do
  begin
    First;
    while not Eof do
    begin
      Edit;
      if FieldByName('aMSJE').AsFloat > dblKYZJE then
      begin
        FieldByName('JE').AsFloat := dblKYZJE;
        dblKYZJE := 0;
      end
      else
      begin
        FieldByName('JE').AsFloat := FieldByName('aMSJE').AsFloat;
        dblKYZJE := dblKYZJE - FieldByName('JE').AsFloat;
      end;
      Post;
      Next;
    end;
    First;
  end;
end;

//自动收款 当前收货单
procedure TfrmXssk.aZdfkBExecute(Sender: TObject);
var
  dblFKHYE: double;
begin
  dblFKHYE := Str2Float(labSKHYE.Caption);
  with dsMx do
    if not Eof then
      if FieldByName('JE').AsFloat <> 0 then
      begin
        Edit;
        FieldByName('JE').AsFloat := 0;
        Post;
      end
      else
      begin
        Edit;
        if FieldByName('aMSJE').AsFloat > dblFKHYE then
          FieldByName('JE').AsFloat := dblFKHYE
        else
          FieldByName('JE').AsFloat := FieldByName('aMSJE').AsFloat;
        Post;
      end;
end;

//查看购进单
procedure TfrmXssk.aCKGJDExecute(Sender: TObject);
begin
  OpenXskd(dsMx['DDID']);
end;

procedure TfrmXssk.SetJYJ;
begin
  if dsZb = nil then exit;
  if DBCheckBox2.Checked then
    labJYJ.Caption := FormatFloat('#,0.00', dsZb.FieldByName('JEA').AsFloat)
  else
    labJYJ.Caption := '0.00';
  SetKYZJE;
  screen.Cursor := crDefault;
end;

procedure TfrmXssk.SetKYZJE;
begin
  if (labJYJ.Caption = 'labJYJ') or (labJED.Caption = 'labJED') then Exit;
  labKYZJE.Caption := FormatFloat('#,0.00', Str2Float(labJYJ.Caption) + dsZb.FieldByName('JE').AsFloat);
  SetSKHYE;
end;

procedure TfrmXssk.SetSKHYE;
begin
  labSKHYE.Caption := FormatFloat('#,0.00', Str2Float(labKYZJE.Caption) - Str2Float(labJED.Caption));
  if dsZb.State in [dsInsert, dsEdit] then
    dsZb['JEB'] := dsZb.FieldByName('JE').AsFloat - Str2Float(labJED.Caption);
end;

procedure TfrmXssk.SetJEABCD;
var
  dblJEA, dblJEB, dblJEC, dblJED: double;
begin
  dblJEA := 0;
  dblJEB := 0;
  dblJEC := 0;
  dblJED := 0;
  with dsMx do
  begin
    First;
    while not Eof do
    begin
      dblJEA := dblJEA + dsMx['aDDJE'];
      dblJEB := dblJEB + dsMx['aYSJE'];
      dblJEC := dblJEC + dsMx['aMSJE'];
      dblJED := dblJED + dsMx['JE'];
      Next;
    end;
    First;
  end;
  labJEA.Caption := FormatFloat('#,0.00', dblJEA);
  labJEB.Caption := FormatFloat('#,0.00', dblJEB);
  labJEC.Caption := FormatFloat('#,0.00', dblJEC);
  labJED.Caption := FormatFloat('#,0.00', dblJED);
end;

procedure TfrmXssk.DBGrid1EditButtonClick(Sender: TObject);
begin
  inherited;
  aZdfkB.Execute;
end;

procedure TfrmXssk.aSaveExecute(Sender: TObject);
var
  blnErr: boolean;
begin
  if Str2Float(labKYZJE.Caption) = 0 then
  begin
    Application.MessageBox(Pchar('可用总金额不能为零, 请输入''收款金额''或选择''使用结余额''!'), '录入错误', MB_OK + MB_ICONWARNING);
    abort;
  end;
  if (dsZb.FieldByName('FKLX').AsInteger = 1) and (Str2Float(labJED.Caption) = 0) then
  begin
    Application.MessageBox(Pchar('收款金额没有付任何应收单据。(如果要进行预收收款,请选择''收款类型''为预收款)'), '录入错误', MB_OK + MB_ICONWARNING);
    abort;
  end;
  if (dsZb.FieldByName('FKLX').AsInteger = 1) and
    (Str2Float(labJED.Caption) > Str2Float(labKYZJE.Caption)) then
  begin
    Application.MessageBox(Pchar('本次收款总金额不应该大于可用总金额,请重新分配本次收款。'), '录入错误', MB_OK + MB_ICONWARNING);
    abort;
  end;
  blnErr := False;
  with dsMx do
  begin
    First;
    while not Eof do
    begin
      if FieldByName('JE').AsFloat > FieldByName('aMSJE').AsFloat then
      begin
        blnErr := True;
        DBGrid1.SelectedIndex := DBGrid1.FieldCount - 1;
        Break;
      end;
      Next;
    end;
    if not blnErr then
      First;
  end;
  if blnErr then
  begin
    Application.MessageBox(Pchar('本次收款不应该大于销售单末收金额。'), '录入错误', MB_OK + MB_ICONWARNING);
    abort;
  end;
  if (dsZb.FieldByName('FKLX').AsInteger = 1) and
    (Str2Float(labJED.Caption) < Str2Float(labKYZJE.Caption)) then
    if Application.MessageBox( '收款有结余,结余金额转入对应客户预收款中?',
      '询问', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON1 ) = IDNO then
      abort;
  inherited;
end;

procedure TfrmXssk.btnCloseTsClick(Sender: TObject);
begin
  pnlTs.Visible := False;
end;

procedure TfrmXssk.aTsExecute(Sender: TObject);
begin
  pnlTs.Top := (self.Height - pnlTs.Height) div 2;
  pnlTs.Visible := True;
end;

procedure TfrmXssk.aKhXxExecute(Sender: TObject);
begin
  frmKhXx := TfrmKhXx.Create(Application);
  with frmKhXx do
  begin
    intKHID := dsZb.FieldByName('KHID').AsInteger;
    ShowModal;
    Free;
  end;
end;

end.

⌨️ 快捷键说明

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