📄 xssk.pas
字号:
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 + -