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

📄 sy_ckjhdzd.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    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 + -