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

📄 sy_kcpptj.pas

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