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

📄 sy_ckjhdzd1.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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_DWDM);
    if V_ItemIndex = -1 then
    begin
      CB_PPMC.Items.Insert(0, V_DWMC);
      CB_PPMC.FieldItems.Insert(0, 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();
end;

procedure TFrmY_CKJHDZD1.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_CKJHDZD1.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_CKJHDZD1.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);
end;

procedure TFrmY_CKJHDZD1.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_CKJHDZD1.BBt_DeleteDWClick(Sender: TObject);
begin
  if not Qry_Main.IsEmpty then
    Qry_Main.Delete;
end;

procedure TFrmY_CKJHDZD1.BBt_AddDWClick(Sender: TObject);
begin
  //添加票品
  FrmY_CKJHDZD_XZPP := TFrmY_CKJHDZD_XZPP.Create(nil);
  with FrmY_CKJHDZD_XZPP do
  begin
    ShowModal;
    if ModalResult <> MrOK then
    begin
      Free;
      Exit;
    end;
    with FrmY_CKJHDZD_XZPP.Qry_Static do
    begin
      First;
      while not Eof do
      begin
        if FrmY_CKJHDZD_XZPP.DBG_PP.SelectedRows.CurrentRowSelected then
        begin
          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;
          V_FPSL := 0;
          if not Qry_Main.Locate('PPDM;JJ;KFDM', VarArrayOf([V_PPDM, V_JJ, V_KFDM]), []) then
            //添加票品
            ps_AddRec();
        end;
        Next;
      end;
    end;
    Free;
  end;
  Qry_MainAfterScroll(nil);

  DBG_Main.SetFocus;
end;

procedure TFrmY_CKJHDZD1.L_CKJHDHDblClick(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 = ''0'' ,PZR= '''' '
      + ' where CKJHDH=''' + V_CKJHDH + '''';
    ExecSQL;
  end;

  //刷新出库计划单
  CB_CKJHDHChange(nil);
end;


procedure TFrmY_CKJHDZD1.BBt_PrintClick(Sender: TObject);
var
  StrSQL: string;
begin
  if CB_CKJHDH.Text = '' then
  begin
    CHQMsgBox('请选择分配单号!');
    Exit;
  end;
  if Qry_Main.IsEmpty then Exit;

  Frm_RichEdit := TFrm_RichEdit.Create(nil);
  CKJHDCX_RPT := TCKJHDCX_RPT.Create(nil);
  with CKJHDCX_RPT, Frm_RichEdit do
  try
    StrSQL := 'select ROWNUM, A.CKJHDH, A.CKXZ, A.ZBR, A.PZR,A.ZDRQ, A.BZ ,B.DWMC, B.PPMC,C.ZH,B.XJ/100 XJ, DECODE(B.ZK,0,B.JSJ/100,B.ZK) ZK, B.JSJ,';
    StrSQL := StrSQL + ' B.FPSL,B.FPSL * ((B.XJ*nvl(B.ZK/100, 0) + nvl(B.JSJ, 0)))/100 JE FROM TYS_YPCKJHDB A,TYS_YPCKJHDPPB B,TB_YZPPXXB C where A.CKJHDH = B.CKJHDH  and B.PPDM=C.TDM AND A.CKJHDH =''' + CB_CKJHDH.Text + '''';
    Qry_Print.SQL.Text := StrSQL;
    Qry_Print.Open;
    QRLabel12.Caption := '集邮品';
    QRLabel20.Caption := FormatDateTime('yyyy"年"mm"月"dd"日"', StrToDate(Qry_Print.fieldByName('zdrq').AsString));

    if CHQMsgBox('是否采用套打?', 2) = IDYES then
      Tao_Print_Flag := True
    else
      Tao_Print_Flag := False;

    DetailLines := 0;
    Prepare;
    try
      QRLabel19.Caption := IntToStr(QRPrinter.PageCount);
    finally
      QRPrinter.Free;
    end;
    QRPrinter := nil;

    Preview;
  finally
    CKJHDCX_RPT.Free;
    Frm_RichEdit.Free;
  end;
end;

procedure TFrmY_CKJHDZD1.Qry_MainFPSLSetText(Sender: TField;
  const Text: string);
var
  TextValue: Integer;
begin
  try
    TextValue := StrToInt(Text);
  except
    CHQMsgBox('输入有误,可能输入数值过大,请重新输入!');
    Exit;
  end;
  if TextValue < 0 then
  begin
    CHQMsgBox('输入有误,输入数值为负值,请重新输入!');
    Exit;
  end;
  if TextValue > 99999999 then
  begin
    CHQMsgBox('输入有误,输入数值过大,请重新输入!');
    Exit;
  end;
  Sender.AsInteger := TextValue;

  //刷新库存
  Qry_MainAfterScroll(nil);
end;

procedure TFrmY_CKJHDZD1.Qry_MainAfterScroll(DataSet: TDataSet);
begin
  //刷新库存
  if Qry_Main.IsEmpty then Exit;
  with Qry_Main do
    CE_KC.Value := PS_GetSYTS(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat, FieldByName('CKJHDH').AsString) - FieldByName('FPSL').AsInteger;
  if CE_KC.Value < 0 then
    CE_KC.Font.Color := ClRed
  else
    CE_KC.Font.Color := ClBlue;
end;

procedure TFrmY_CKJHDZD1.Qry_MainJJGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
begin
{修改,销价进价结算价显示小数点后3位 原来调用的CurrGetText替换为CurrGetText3 jhshao 2003.05.08}
  CurrGetText3(Sender, Text, DisplayText);
end;

procedure TFrmY_CKJHDZD1.DBG_MainKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//  DBGridAutoChangeCursor(Sender, key);
end;


procedure TFrmY_CKJHDZD1.Query1YFZLSetText(Sender: TField;
  const Text: string);
begin
  Sender.AsFloat := strtofloat(Text);
end;

procedure TFrmY_CKJHDZD1.Qry_MainJJSetText(Sender: TField;
  const Text: string);
begin
  CurrSetText(Sender, Text);
end;

procedure TFrmY_CKJHDZD1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  SaveAllColWidth(self);
end;

procedure TFrmY_CKJHDZD1.Qry_MainJSJChange(Sender: TField);
begin
  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;

procedure TFrmY_CKJHDZD1.E_CKXZChange(Sender: TObject);
begin
  Qry_Third.Close;
  Qry_Main.Close;
  CE_KC.Text := '';
  L_CKJHDH.Font.Color := ClBlack;
  CB_PPMC.Text := '';

  if E_CKXZ.Text = '' then Exit;
  if E_CKXZ.Text = '' then Exit;
  case E_CKXZ.ItemIndex of
    0: V_CKXZ := '10';
    1: V_CKXZ := '12';
    2: V_CKXZ := '14';
  end;

  //刷新标题
  case E_CKXZ.ItemIndex of
    0: XttxTitle.Caption := '出库分配单制定';
    1: XttxTitle.Caption := '注销分配单制定';
    2: XttxTitle.Caption := '退缴分配单制定';
  end;

  //刷新出库计划单下拉框
  CB_PPMC.ClearAll;
  CB_PPMC.OnChange := nil;
  with Qry_Static do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select distinct B.DWMC,B.DWDM 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 ''PW%''');
    SQL.Add('and TO_CHAR(A.ZDRQ,''YYYY'') = ''' + ND.Text + '''  ');
    SQL.Add('and (A.ZT = ''' + CG_WCL + ''' or A.ZT = ''' + CG_DG + ''') ');
    SQL.Add('and A.CKXZ = ''' + V_CKXZ + ''' ');
    SQL.Add('and C.YGDM = ''' + VG_UserID + ''' ');
    SQL.Add('order by b.DWDM ');
    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_CKJHDZD1.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 ''PW%''');
    SQL.Add('and B.DWDM = ''' + 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_CKJHDZD1.Qry_MainBeforeInsert(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrmY_CKJHDZD1.CE_KCDblClick(Sender: TObject);
begin
  if Qry_Main.IsEmpty then Exit;
  //显示当前选定票品的库存情况
  FrmY_KC := TFrmY_KC.Create(nil);
  FrmY_KC.E_PPMC.Text := Qry_MainPPMC.AsString;
  FrmY_KC.E_JJ.Text := Qry_MainJJ.AsString;
  with Qry_Main do
  begin
    FrmY_KC.E_KCTS.Value := PS_GetKC(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat);
    FrmY_KC.E_SYTS.Value := PS_GetSYTS(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat, FieldByName('CKJHDH').AsString) - FieldByName('FPSL').AsInteger;
  end;
  FrmY_KC.E_FPTS.Value := FrmY_KC.E_KCTS.Value - FrmY_KC.E_SYTS.Value;
  FrmY_KC.ShowModal;
  FrmY_KC.Free;


end;

procedure TFrmY_CKJHDZD1.Qry_MainJSJSetText(Sender: TField;
  const Text: string);
var
  TextValue: Double;
begin
  try
    TextValue := Round(StrToFloat(Text) * 100);
  except
    CHQMsgBox('输入有误,可能输入数值过大,请重新输入!');
    Exit;
  end;
  if TextValue < 0 then
  begin
    CHQMsgBox('输入有误,输入数值为负值,请重新输入!');
    Exit;
  end;
  if TextValue > 9999999 then
  begin
    CHQMsgBox('输入有误,输入数值过大,请重新输入!');
    Exit;
  end;
  Sender.AsFloat := TextValue;
end;

procedure TFrmY_CKJHDZD1.CE_KCEnter(Sender: TObject);
begin
  DBG_Main.SetFocus;
end;

end.

⌨️ 快捷键说明

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