📄 sy_kcpptj.pas
字号:
QryTJDB.FieldByName('YDJ').AsString := FieldByName('XJ').oldvalue;
QryTJDB.FieldByName('XDJ').AsFloat := FieldByName('XJ').AsFloat;
end;
end;
QryTJDB.FieldByName('ZBR').AsString := VG_USERNAME;
end;
end;
function TfrmSJ_TJD.Save2: Boolean;
var
vl_b_nochange: boolean;
i: integer;
begin
Result := false;
with qry_KC2 do {query}
begin
Database.StartTransaction;
try
DisableControls;
First;
vl_b_nochange := true;
while not Eof do
begin
if (fieldByname('FLG').AsInteger = 1) then
begin
vl_b_nochange := false;
if (not FieldByname('XJ').isNull) and (FieldByname('XJ').AsFloat > 0) then
begin
DoSetKCJG(Qry_KC2, '', '', i);
end
end;
Next;
end;
EnableControls;
Database.Commit;
result := True;
except
EnableControls;
if Database.InTransaction then
Database.RollBack;
CHQMsgBox('保存数据失败!');
end;
SetState(dtBrowse);
close;
open;
CHQMsgBox('已经完成调价!');
end;
end;
procedure TfrmSJ_TJD.DoSetKCJG(Sender: TrxQuery; ATJDH, AYORX: string; var AXH: integer);
begin
with Sender do
begin
data.qrytmp.Sql.Text := TUpdateSQL(UpdateObject).ModifySQL.Text;
if Sender = QryKC then
begin
data.qrytmp.ParamByName('PPDM').Asstring := FieldByName('ppdm').Asstring;
data.qrytmp.ParamByName('XJ').AsFloat := FieldByName('XJ').AsFloat;
data.qrytmp.ExecSQL;
if PCo_jg.ActivePageIndex = 0 then
SetJYPTJB(ATJDH, AYORX, AXH);
end
else //page 2
begin
{ if Fio_type = io_txp then
data.qrytmp.ParamByName('TUDM').Asstring := FieldByName('ppdm').Asstring
else}
data.qrytmp.ParamByName('PPDM').Asstring := FieldByName('ppdm').Asstring;
data.qrytmp.ParamByName('JSJ').AsFloat := FieldByName('JSJ').AsFloat;
data.qrytmp.ParamByName('ZK').AsFloat := FieldByName('ZK').AsFloat;
// if Fio_type <> io_txp then
data.qrytmp.ParamByName('JJ').AsFloat := FieldByName('JJ').AsFloat;
data.qrytmp.ParamByName('KFDM').Value := DBLCB_kf.KeyValue;
data.qrytmp.ExecSQL;
edit;
end;
Edit;
fieldByname('FLG').AsInteger := 0;
end;
end;
function TfrmSJ_TJD.Save: Boolean;
var
OldBookmark: TBookMark;
Flag: boolean;
xh, ACount: integer;
xhsql: string;
vl_s_yorx: string[1];
vl_s_tjdh: string;
vl_b_nochange: boolean;
function DoTJJZSB: boolean;
var
v_sp_TJJZ: TStoredProc;
begin
Result := false;
case Fio_type of
io_jyp:
v_sp_TJJZ := SP_JYP_TJJZ;
io_txp:
v_sp_TJJZ := SP_TXP_TJJZ;
io_yp:
v_sp_TJJZ := SP_YP_TJJZ;
io_grp:
v_sp_TJJZ := SP_GRP_TJJZ;
end;
with v_sp_TJJZ do (*调价记帐*)
begin
ParamByName('PC_TJDH').AsString := vl_s_tjdh;
Execproc;
if Params[0].Asinteger = 0 then
else
begin
Result := true;
EnableControls;
qryKC.database.rollback;
CHQMsgBox('调价记帐失败!');
end;
end;
end;
begin
Result := false;
with qryKC do {query}
begin
//check 销价(集邮票||邮品)
if PCo_jg.ActivePageIndex = 0 then
begin
if checkXJHSJ(ACount) then
begin
case CHQMsgBox('有' + inttostr(ACount) + '条记录销价低于库存核算价,是否还要保存?', 3) of
IDCancel:
Exit;
IDNo:
begin
ModiPanel1BtnClick(bnCancel);
exit;
end;
end;
end;
end;
OldBookMark := GetBookmark;
Database.StartTransaction;
try
DisableControls;
First;
Flag := True;
case Fio_Type of
io_jyp:
xhsql := 'select max(xh) as xh from tys_jyptjb';
io_txp:
xhsql := 'select max(xh) as xh from tys_txptjb';
io_yp:
xhsql := 'select max(xh) as xh from tys_yptjb';
io_grp:
xhsql := 'select max(xh) as xh from tys_grptjb';
end;
GetData(xhsql);
xh := data.qrytmp.fieldbyname('xh').asinteger;
data.qrytmp.close;
xhsql := 'select sysdate from dual';
GetData(xhsql);
if PCo_jg.ActivePageIndex = 0 then
begin
case RGr_YorX.ItemIndex of
0:
vl_s_yorx := 'Y';
1:
vl_s_yorx := 'X';
end;
case Fio_Type of (*调价单号*)
io_jyp:
vl_s_tjdh := GetTJDH('J');
io_txp:
vl_s_tjdh := GetTJDH('T'); //0821补充,零枚调价
io_yp:
vl_s_tjdh := GetTJDH('P');
io_grp:
vl_s_tjdh := GetTJDH('G');
end;
end;
QryTJD.Open;
QryTJDB.Open;
vl_b_nochange := true;
while not Eof do
begin
if (fieldByname('FLG').AsInteger = 1) then
begin
vl_b_nochange := false;
if (not FieldByname('XJ').isNull) and (FieldByname('XJ').AsFloat > 0) then
begin
DoSetKCJG(QryKC, vl_s_tjdh, vl_s_yorx, xh);
end
else if (FieldByname('XJ').isNull) then
begin
Flag := False;
Break;
end;
end;
Next;
end;
EnableControls;
QryTJD.applyupdates;
QryTJDB.applyupdates;
Database.Commit;
result := True;
except
EnableControls;
if Database.InTransaction then Database.RollBack;
raise exception.Create('保存数据失败!');
end;
QryTJD.commitupdates;
QryTJDB.commitupdates;
if (PCo_jg.ActivePageIndex = 0) and not vl_b_nochange then
if DoTJJZSB then
exit; //调价记帐失败
if not Flag then
CHQMsgBox('销价不能为空且必须大于0!')
else
begin
GotoBookMark(OldBookMark);
SetState(dtBrowse);
close;
open;
CHQMsgBox('已经完成调价!');
end;
FreeBookmark(OldBookMark);
end;
end;
procedure TfrmSJ_TJD.ModiPanel1BtnClick(Index: TBtnVisible);
begin
inherited;
case index of
bnEdit:
case PCo_jg.ActivePageIndex of
0:
if not qryKC.IsEmpty then
SetState(dtEdit);
1:
if not qry_KC2.IsEmpty then
SetState(dtEdit);
end;
bnSave:
case PCo_jg.ActivePageIndex of
0:
if not qryKC.IsEmpty then
Save;
1:
if not qry_KC2.IsEmpty then
Save2;
end;
bnCancel:
if CHQMsgBox('取消编辑, 确定吗?', 2) = IDYES then
begin
case PCo_jg.ActivePageIndex of
0:
qryKC.Cancelupdates;
1:
qry_KC2.Cancelupdates;
end;
SetState(dtBrowse);
end;
bnPrint: {print}
;
bnClose: Close;
end;
end;
procedure TfrmSJ_TJD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
if (FDtState in [dtInsert, dtEdit]) then
case CHQMsgBox('数据已经编辑,需要保存吗?', 3) of
IDYES:
if not Save then Action := caNone;
IDCANCEL: Action := caNone;
end;
end;
procedure TfrmSJ_TJD.Edit1Change(Sender: TObject);
begin
inherited;
{2003-05-07 by sjh,修改原来只在第一页按志号定位票品的问题(根据当前活动页在不同Query内定位)}
if Edit1.Text <> '' then
case PCo_jg.ActivePageIndex of
0:
qryKC.Locate('ZH', Edit1.Text, [loCaseInsensitive, loPartialKey]);
1:
qry_KC2.Locate('ZH', Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;
end;
procedure TfrmSJ_TJD.PCo_jgChange(Sender: TObject);
begin
inherited;
if (FDtState <> dtBrowse) then
case PCo_jg.ActivePageIndex of
0:
PCo_jg.ActivePageIndex := 1;
1:
PCo_jg.ActivePageIndex := 0;
end
else
SpeedButton1Click(nil);
lbl_kf.Visible := PCo_jg.ActivePageIndex = 1;
DBLCB_kf.Visible := lbl_kf.Visible;
RGr_JorZ.Visible := lbl_kf.Visible;
BBt_mr.Visible := lbl_kf.Visible;
CEd_jsj.Visible := lbl_kf.Visible;
CEd_zk.Visible := lbl_kf.Visible;
end;
procedure TfrmSJ_TJD.SpeedButton1Click(Sender: TObject);
begin
inherited;
DBReSelect;
end;
procedure TfrmSJ_TJD.RGr_JorZClick(Sender: TObject);
begin
inherited;
CEd_jsj.Enabled := (RGr_JorZ.ItemIndex = 0);
CEd_zk.Enabled := (RGr_JorZ.ItemIndex = 1);
BBt_mr.Enabled := (RGr_JorZ.ItemIndex = 1) and (FDtState = dtEdit);
end;
procedure TfrmSJ_TJD.BBt_mrClick(Sender: TObject);
var
vl_s_ppdm: string;
begin
inherited;
vl_s_ppdm := qry_KC2.FieldByName('PPDM').AsString;
qry_KC2.First;
with qry_KC2 do
while not Eof do
begin
Edit;
case RGr_JorZ.ItemIndex of
0:
if Length(CEd_jsj.Text) > 0 then
begin
FieldByName('JSJ').AsFloat := strtofloat(CEd_jsj.Text) * 100;
FieldByName('ZK').AsFloat := 0;
end;
1:
if Length(CEd_zk.Text) > 0 then
begin
FieldByName('ZK').AsFloat := strtofloat(CEd_zk.Text);
FieldByName('JSJ').AsFloat := 0;
end;
end;
Next;
end;
end;
procedure TfrmSJ_TJD.qryKCYJGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
inherited;
CurrGetText(Sender, Text, DisplayText);
end;
procedure TfrmSJ_TJD.qryKCYJSetText(Sender: TField;
const Text: string);
begin
inherited;
CurrSetText(Sender, Text);
end;
procedure TfrmSJ_TJD.qryKCBeforePost(DataSet: TDataSet);
begin
inherited;
with DataSet do
if FieldByName('FLG').AsInteger = 0 then
begin
Edit;
FieldByName('FLG').AsInteger := 1;
end;
end;
procedure TfrmSJ_TJD.qryKCXJSetText(Sender: TField;
const Text: string);
begin
inherited;
Sender.AsFloat := strtofloat(Text) * 100;
end;
function TfrmSJ_TJD.checkXJHSJ(var pv_ACount: integer): boolean;
var
vQry_hsj: TQuery;
begin
Result := false;
pv_ACount := 0;
vQry_hsj := TQuery.Create(self);
vQry_hsj.DatabaseName := QryTJD.DatabaseName;
qryKC.first;
while not qryKC.Eof do
begin
vQry_hsj.Close;
vQry_hsj.SQL.Clear;
vQry_hsj.SQL.Add('SELECT DECODE(G.KCHSJ, NULL, TPMZ, 0, TPMZ, KCHSJ) AS KCHSJ ' +
'FROM tb_yzpptxxb Y, Tg_GJPPJGB G WHERE Y.TDM = G.PPDM (+) AND Y.TDM=''' +
qryKC.FieldByName('PPDM').AsString + '''');
vQry_hsj.Open;
if vQry_hsj.FieldByName('KCHSJ').AsFloat > qryKC.FieldByName('XJ').AsFloat then
pv_ACount := pv_ACount + 1;
qryKC.Next;
end;
Result := pv_ACount > 0;
end;
procedure TfrmSJ_TJD.qryKCJSJChange(Sender: TField);
begin
inherited;
if Sender.FieldName = 'JSJ' then
begin
if Sender.AsFloat <> 0 then
Sender.DataSet.FieldByName('ZK').AsFloat := 0;
end;
if Sender.FieldName = 'ZK' then
begin
if Sender.AsFloat <> 0 then
Sender.DataSet.FieldByName('JSJ').AsFloat := 0;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -