📄 sy_ckjhdzd.pas
字号:
SQL.Add('and (A.ZT = ''' + CG_WCL + ''' or A.ZT = ''' + CG_DG + ''') ');
SQL.Add('and C.YGDM = ''' + VG_UserID + ''' ');
SQL.Add('order by b.PPDM ');
Open;
while not Eof do
begin
CB_PPMC.Items.Add(Fields[0].AsString);
CB_PPMC.FieldItems.Add(Fields[1].AsString);
Next;
end;
Close;
end;
CB_PPMC.OnChange := CB_PPMCChange;
if CB_PPMC.Items.Count > 0 then
CB_PPMC.ItemIndex := 0;
CB_PPMCChange(nil);
end;
procedure TFrmY_CKJHDZD.CB_PPMCChange(Sender: TObject);
begin
//刷新出库计划单
CB_CKJHDH.Text := '';
CB_CKJHDH.Items.Clear;
CB_CKJHDH.OnChange := nil;
with Qry_Static do
begin
Close;
SQL.Clear;
SQL.Add('select distinct A.CKJHDH from TYS_YPCKJHDB A, TYS_YPCKJHDPPB B, TGS_KFRYDZB C');
SQL.Add('where A.CKJHDH=B.CKJHDH and B.KFDM=C.KFDM and A.CKJHDH LIKE ''PN%''');
SQL.Add('and B.PPDM = ''' + CB_PPMC.FieldString + ''' ');
SQL.Add('and (A.ZT = ''' + CG_WCL + ''' or A.ZT = ''' + CG_DG + ''') ');
SQL.Add('and C.YGDM = ''' + VG_UserID + ''' ');
SQL.Add('order by A.CKJHDH DESC ');
Open;
while not Eof do
begin
CB_CKJHDH.Items.Add(Fields[0].AsString);
Next;
end;
Close;
end;
CB_CKJHDH.OnChange := CB_CKJHDHChange;
if CB_CKJHDH.Items.Count > 0 then
CB_CKJHDH.ItemIndex := 0;
CB_CKJHDHChange(nil);
end;
procedure TFrmY_CKJHDZD.CB_CKJHDHChange(Sender: TObject);
begin
//数据复位
Qry_Third.Close;
Qry_Main.Close;
CE_KC.Text := '';
E_CKXZ.Text := '';
//颜色复位
L_CKJHDH.Font.Color := ClBlack;
CE_KC.Font.Color := ClBlue;
//若出库计划单为空,跳出
if CB_CKJHDH.Text = '' then Exit;
//保存临时数据
V_CKJHDH := UpperCase(CB_CKJHDH.Text);
//打开主表
with Qry_Third do
begin
Close;
Prepare;
Params[0].AsString := V_CKJHDH;
Open;
if not Eof then
V_CKXZ := FieldByName('CKXZ').AsString;
end;
//刷新出库性质名称
E_CKXZ.Text := PY_XZDMTOMC(V_CKXZ);
//打开从表
with Qry_Main do
begin
Close;
Prepare;
Params[0].AsString := V_CKJHDH;
Open;
//保存临时数据
V_KFDM := FieldByName('KFDM').AsString;
V_PPDM := FieldByName('PPDM').AsString;
V_PPMC := FieldByName('PPMC').AsString;
V_KWH := FieldByName('KWH').AsString;
V_JJ := FieldByName('JJ').AsFloat;
V_XJ := FieldByName('XJ').AsFloat;
V_ZK := FieldByName('ZK').AsFloat;
V_JSJ := FieldByName('JSJ').AsFloat;
end;
//刷新出库计划单的出库状态
if Qry_Third.FieldByName('ZT').AsString = CG_DG then
L_CKJHDH.Font.Color := ClRed
else
L_CKJHDH.Font.Color := ClBlack;
//刷新库存
CE_KC.Value := PS_GetSYTS(V_KFDM, V_PPDM, V_JJ);
if CE_KC.Value < 0 then
CE_KC.Font.Color := ClRed
else
CE_KC.Font.Color := ClBlue;
end;
procedure TFrmY_CKJHDZD.BBt_SaveClick(Sender: TObject);
var
V_ItemIndex: Integer;
begin
if CE_KC.Value < 0 then
begin
CHQMsgBox(V_PPMC + '的分配数量已超出实际库存量, 请调整分配数量!');
DBG_Main.SelectedIndex := DBG_Main.Columns.Count - 1;
DBG_Main.SetFocus;
Exit;
end;
//求出此次分配套数
with Qry_main do
begin
DisableControls;
First;
while not Eof do
begin
if FieldByName('FPSL').AsInteger > 0 then
Next
else
begin
EnableControls;
CHQMsgBox('请确定分配数量!');
DBG_Main.SetFocus;
Exit;
end;
end;
First;
EnableControls;
end;
//新增出库单的处理
if (V_State = 1) then
begin
//取得分配单号
V_CKJHDH := GetFPDH('PN');
//给主表赋分配单号
with Qry_Third do
begin
Filtered := False;
DisableControls;
Edit;
FieldByName('CKJHDH').AsString := V_CKJHDH;
EnableControls;
Filtered := True;
end;
//给从表赋分配单号
with Qry_Main do
begin
Filtered := False;
DisableControls;
First;
while not Eof do
begin
Edit;
FieldByName('CKJHDH').AsString := V_CKJHDH;
Next;
end;
First;
EnableControls;
Filtered := True;
end;
end;
try //提交数据库
Qry_Main.Database.StartTransaction;
Qry_Third.ApplyUpdates; //提交主表
Qry_Main.ApplyUpdates; //题价从表
Qry_Main.Database.Commit;
except
Qry_Main.Database.RollBack;
CHQMsgBox('数据存储错误!');
exit;
end;
Qry_Third.CommitUpdates; //清除缓存的内容
Qry_Main.CommitUpdates;
//刷新出库计划单下拉框
if (V_State = 1) then
begin
V_ItemIndex := CB_PPMC.FieldItems.IndexOf(V_PPDM); //DWDM);
if V_ItemIndex = -1 then
begin
CB_PPMC.Items.Insert(0, V_PPMC); //V_DWMC);
CB_PPMC.FieldItems.Insert(0, V_PPDM); //V_DWDM);
CB_PPMC.ItemIndex := 0;
end
else if CB_PPMC.ItemIndex <> V_ItemIndex then
begin
CB_PPMC.ItemIndex := V_ItemIndex;
end;
CB_PPMC.OnChange(nil);
end;
//删除子表为空的主表
if Qry_Main.IsEmpty then
begin
with Qry_Static do
begin
Close;
SQL.Text := 'delete TYS_TXPCKJHDB '
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
end;
CB_CKJHDH.Items.Delete(CB_CKJHDH.ItemIndex);
if CB_CKJHDH.Items.Count <= 0 then
begin
CB_PPMC.DeleteItems(CB_PPMC.ItemIndex);
CB_PPMC.ItemIndex := 0;
CB_PPMC.OnChange(nil);
end;
CB_CKJHDH.ItemIndex := 0;
//刷新出库计划单
CB_CKJHDHChange(nil);
end;
PS_SetStatus();
{ NDChange(nil);
CB_PPMC.Text := V_PPMC;
CB_PPMCChange(nil);
CB_CKJHDH.Text := V_CKJHDH;
CB_CKJHDHChange(nil);}
end;
procedure TFrmY_CKJHDZD.BBt_DeleteFPJHClick(Sender: TObject);
begin
if Qry_Third.IsEmpty then Exit;
if Qry_Third.FieldByName('ZT').Asstring = CG_DG then
begin
CHQMsgBox('此出库计划单已签批!');
Exit;
end;
if CHQMsgBox('确实要删除吗?', 2) = IDNO then Exit;
with Qry_Static do
begin
//删除从表
Close;
SQL.Text := 'delete TYS_YPCKJHDPPB '
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
Close;
//删除主表
SQL.Text := 'delete TYS_YPCKJHDB '
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
end;
CB_CKJHDH.Items.Delete(CB_CKJHDH.ItemIndex);
if CB_CKJHDH.Items.Count <= 0 then
begin
CB_PPMC.DeleteItems(CB_PPMC.ItemIndex);
CB_PPMC.ItemIndex := 0;
CB_PPMC.OnChange(nil);
end;
CB_CKJHDH.ItemIndex := 0;
CB_CKJHDHChange(nil);
end;
procedure TFrmY_CKJHDZD.BBt_ModifyClick(Sender: TObject);
begin
if Qry_Third.IsEmpty then Exit;
if Qry_Third.FieldByName('ZT').Asstring = CG_DG then
begin
CHQMsgBox('此出库计划单已签批!');
Exit;
end;
Qry_Third.Edit;
Qry_Main.Edit;
DBG_Main.SetFocus;
PS_SetStatus(3);
end;
procedure TFrmY_CKJHDZD.BBt_DGClick(Sender: TObject);
begin
if Qry_Third.IsEmpty then Exit;
if Qry_Third.FieldByName('ZT').Asstring = CG_DG then
begin
CHQMsgBox('此出库计划单已签批');
Exit;
end;
if CHQMsgBox('确实要签批吗?', 2) = IDNO then Exit;
with Qry_Static do
begin
Close;
SQL.Text := 'update TYS_YPCKJHDB set ZT = ''2'' ,PZR= ''' + VG_UserName + ''''
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
end;
CB_CKJHDHChange(nil);
{ with Qry_Third do
begin
DisableControls;
First;
while not Eof do
begin
Edit;
FieldByName('PZR').AsString := VG_UserName;
FieldByName('ZT').AsString := CG_DG;
Next;
end;
EnableControls;
end;
// PS_SetStatus(4);
BBt_SaveClick(nil); }
end;
procedure TFrmY_CKJHDZD.BBt_CancelClick(Sender: TObject);
begin
//刷新出库计划单
CB_PPMC.Text := '';
if (CB_PPMC.ItemIndex <> -1) then
CB_PPMC.Text := CB_PPMC.Items[CB_PPMC.ItemIndex];
if CB_CKJHDH.ItemIndex <> -1 then
CB_CKJHDH.Text := CB_CKJHDH.Items[CB_CKJHDH.ItemIndex];
CB_CKJHDHChange(nil);
PS_SetStatus();
end;
procedure TFrmY_CKJHDZD.BBt_DeleteDWClick(Sender: TObject);
begin
if Qry_Main.IsEmpty then Exit;
//刷新库存
CE_KC.Value := CE_KC.Value + Qry_MainFPSL.AsInteger;
if CE_KC.Value < 0 then
CE_KC.Font.Color := ClRed
else
CE_KC.Font.Color := ClBlue;
Qry_Main.Delete;
end;
procedure TFrmY_CKJHDZD.BBt_AddDWClick(Sender: TObject);
begin
//添加单位
FrmY_CKJHDZD_XZDW := TFrmY_CKJHDZD_XZDW.Create(nil);
with FrmY_CKJHDZD_XZDW do
begin
Qry_Static.Close;
Qry_Static.SQL.Text := 'select * from TGS_GXDWSJB WHERE JYYW=''1'' and FHDX=''1'' and DWDM not in (''' + GetExistField(Qry_Main, 'DWDM', ''',''') + ''') order by PXM';
Qry_Static.Open;
ShowModal;
if ModalResult <> MrOK then
begin
Free;
Exit;
end;
with FrmY_CKJHDZD_XZDW.Qry_Static do
begin
First;
while not Eof do
begin
if FrmY_CKJHDZD_XZDW.DBGrid1.SelectedRows.CurrentRowSelected then
begin
//取得临时数据
V_DWDM := FieldByName('DWDM').AsString;
V_DWMC := FieldByName('DWJC').AsString;
// V_DWMC := FieldByName('DWMC').AsString;
V_FPSL := 0;
if not Qry_Main.Locate('DWDM', V_DWDM, []) then
//添加票品
ps_AddRec();
end;
Next;
end;
end;
Free;
end;
DBG_Main.SetFocus;
end;
procedure TFrmY_CKJHDZD.Qry_MainXJSetText(Sender: TField;
const Text: string);
var
TextValue: Integer;
begin
try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -