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

📄 ss_txpkccsh.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    Before_Insert := BeforeInsert;
    BeforeInsert := nil;
    Insert;
    BeforeInsert := Before_Insert;

    FieldByName('ZH').AsString := l_ZH;
    FieldByName('TMC').AsString := l_TMC;
    FieldByName('KWH').AsString := l_KWH;
    FieldByName('TDM').AsString := l_TDM;
    FieldByName('TPMZ').AsFloat := l_TPMZ;
    FieldByName('TPSJ').AsFloat := l_TPSJ;
    //  FieldByName('JJ').AsInteger := l_JJ;

    qry_initXJ.OnChange := nil;
    FieldByName('XJ').AsFloat := l_XJ;
    qry_initXJ.OnChange := qry_initXJChange;

    FieldByName('TS').AsFloat := 0;
    FieldByName('ZK').AsFloat := l_ZK;
    FieldByName('JSJ').AsFloat := l_JSJ;

    EnableControls;

    {设置处于编辑状态}
    rxdb_Init.SelectedIndex := 4;
    if not (dgAlwaysShowEditor in rxdb_Init.Options) then
    begin
      rxdb_Init.Options := rxdb_Init.Options + [dgAlwaysShowEditor];
      rxdb_Init.Options := rxdb_Init.Options - [dgAlwaysShowEditor];
    end;

    rxdb_Init.SetFocus;
  end;
end;

{==============================================================================}
{批量设置进价等}
procedure Tfrm_TXPKCCSH.Set_Data;
begin
  with TFrm_TXP_Init_PLSR.Create(Application) do
  try
    ShowModal;
    if ModalResult = mrok then
      case State of
        1: Set_ZK(Set_Result);
        21: Set_JSJ(Set_Result);
        22: Set_JSJ(Set_Result, false);
        31: Set_JJ1(Set_Result, Over_Write);
        32: Set_JJ2(Set_Result, Over_Write);
        4: Set_XJ(Over_Write);
//        2: Set_JSJ(Set_Result);
      end;
  finally
    Free;
  end;
end;

{-------------------------------------------------------------------------------}
{批量设置折扣}
procedure Tfrm_TXPKCCSH.Set_ZK(Value: Double);
var
  cur_pos: Pointer;
  i: Integer;
begin
  with qry_Init do
  begin
    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在设置...';
    lbl_State.Refresh;
    Self.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      DisableControls;
      ds_init.DataSet := nil;
      First;
      while not Eof do
      begin
        Edit;
        FieldByName('JSJ').AsFloat := 0;
        FieldByName('ZK').AsFloat := Value;

        pgb_State.Position := i;
        i := i + 1;
        Next;
      end;
      GotoBookmark(cur_pos);
    finally
      FreeBookmark(cur_pos);
      ds_init.DataSet := qry_init;
      EnableControls;
    end;
    pgb_State.Visible := False;
    lbl_State.Visible := False;
    lbl_Search.Visible := True;
  end;
end;

{-------------------------------------------------------------------------------}
{批量设置结算价}
procedure Tfrm_TXPKCCSH.Set_JSJ(Value: Double; AGDZ: boolean = true);
var
  cur_pos: Pointer;
  i: Integer;
begin
  with qry_Init do
  begin
    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在设置...';
    lbl_State.Refresh;
    Self.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      DisableControls;
      ds_init.DataSet := nil;
      First;
      while not Eof do
      begin
        Edit;
        FieldByName('ZK').AsFloat := 0;
//        FieldByName('JSJ').AsFloat := Value * 100;
        if AGDZ then
          FieldByName('JSJ').AsFloat := Value * 100
        else
          FieldByName('JSJ').AsFloat := FieldByName('JJ').AsFloat;

        pgb_State.Position := i;
        i := i + 1;
        Next;
      end;
      GotoBookmark(cur_pos);
    finally
      FreeBookmark(cur_pos);
      ds_init.DataSet := qry_init;
      EnableControls;
    end;
    pgb_State.Visible := False;
    lbl_State.Visible := False;
    lbl_Search.Visible := True;
  end;
end;

{-------------------------------------------------------------------------------}
{批量设置进价1,依据折算价计算}
procedure Tfrm_TXPKCCSH.Set_JJ1(Value: Double; Over_Write: Boolean);
var
  cur_pos: Pointer;
  i: Integer;
begin
  with qry_Init do
  begin
    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在设置...';
    lbl_State.Refresh;
    Self.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      DisableControls;
      ds_init.DataSet := nil;
      First;
      while not Eof do
      begin
        if (Over_Write = True) or (FieldByName('JJ').AsFloat = 0) then
        begin
          Edit;
          FieldByName('JJ').AsFloat := FieldByName('TPSJ').AsFloat * Value / 100;
        end;

        pgb_State.Position := i;
        i := i + 1;
        Next;
      end;
      GotoBookmark(cur_pos);
    finally
      FreeBookmark(cur_pos);
      ds_init.DataSet := qry_init;
      EnableControls;
    end;

    pgb_State.Visible := False;
    lbl_State.Visible := False;
    lbl_Search.Visible := True;
  end;
end;

{批量设置进价2,直接赋值}
procedure Tfrm_TXPKCCSH.Set_JJ2(Value: Double; Over_Write: Boolean);
var
  cur_pos: Pointer;
  i: Integer;
begin
  with qry_Init do
  begin
    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在设置...';
    lbl_State.Refresh;
    Self.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      DisableControls;
      ds_init.DataSet := nil;
      First;
      while not Eof do
      begin
        if (Over_Write = True) or (FieldByName('JJ').AsFloat = 0) then
        begin
          Edit;
          FieldByName('JJ').AsFloat := Value * 100;
        end;

        pgb_State.Position := i;
        i := i + 1;
        Next;
      end;
      GotoBookmark(cur_pos);
    finally
      FreeBookmark(cur_pos);
      ds_init.DataSet := qry_init;
      EnableControls;
    end;
    pgb_State.Visible := False;
    lbl_State.Visible := False;
    lbl_Search.Visible := True;
  end;
end;

{批量设置销价}
procedure Tfrm_TXPKCCSH.Set_XJ(Over_Write: Boolean);
var
  cur_pos: Pointer;
  XjChange: TFieldNotifyEvent;
  i: Integer;
begin
  XjChange := qry_initXJ.OnChange;
  qry_initXJ.OnChange := nil;

  with qry_Init do
  begin
    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在设置...';
    lbl_State.Refresh;
    Self.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      DisableControls;
      ds_init.DataSet := nil;
      First;
      while not Eof do
      begin
        if (Over_Write = True) or (FieldByName('XJ').AsFloat = 0) then
        begin
{          with qry_Tmp do
          begin
            Close;
            SQL.Text := 'Select KCHSJ From TG_GJPPJGB where PPDM=''' + qry_Init.FieldByName('TDM').ASString + '''';
            Open;
          end;}

          Edit;
          FieldByName('XJ').AsFloat := FieldByName('TPSJ').AsFloat; //qry_Tmp.FieldByName('KCHSJ').AsFloat;
          FieldByName('TEMP').AsInteger := 1;
        end;

        pgb_State.Position := i;
        i := i + 1;
        Next;
      end;
      GotoBookmark(cur_pos);
    finally
      FreeBookmark(cur_pos);
      ds_init.DataSet := qry_init;
      EnableControls;
    end;

    pgb_State.Visible := False;
    lbl_State.Visible := False;
    lbl_Search.Visible := True;
  end;

  qry_initXJ.OnChange := XjChange;
end;


{===============================================================================}
{查询}
procedure Tfrm_TXPKCCSH.bbtn_FindClick(Sender: TObject);
begin
  with TFrm_TXP_Init_Search.Create(Application) do
  begin
    try
      ShowModal;
      if ModalResult = mrOk then
      begin
        lbl_Search.Caption := Search_Caption;
        Find_SQL := part_SQL;
        Show_Data;
      end;
    finally
      Free;
    end;
  end;
end;

{-------------------------------------------------------------------------------}
{更改库房,则按照默认显示其内容}
procedure Tfrm_TXPKCCSH.fcb_KFChange(Sender: TObject);
begin
  if Edit_State <> 1 then
    Show_Data;
end;

{-------------------------------------------------------------------------------}
{取消保存初始化数据,恢复原来的状态}
procedure Tfrm_TXPKCCSH.Cancel_Init_Data;
begin
  if CHQMsgBox('确实要取消所做的修改吗?', 2) = mrNo then
    Exit;
  qry_init.CancelUpdates;
  Set_State(0);
end;

{-------------------------------------------------------------------------------}
{保存初始化数据}
function Tfrm_TXPKCCSH.Save_Init_Data: Boolean;
var
  cur_pos: Pointer;
  l_PPDM, l_failPPDM: string;
  l_JJ, l_failJJ: Double;
  Can_Continue: Boolean;
  Have_Find: Boolean;
  i: Integer;
  procedure DoFailLocate;
  begin
    qry_Init.Locate('TDM', l_failPPDM, [loCaseInsensitive]);
    qry_Init.Locate('TDM;JJ', VarArrayOf([l_failPPDM, l_failJJ]), [loCaseInsensitive]);
  end;
begin
  l_JJ := 0;
  l_PPDM := '';

  with qry_init do
  begin
    DisableControls;
    ds_init.DataSet := nil;
    cur_pos := GetBookmark;

    {保存完毕以后返回原始位置}
    Have_Find := False;
    while not Eof do
    begin
      if FieldByName('TS').AsInteger <> 0 then
      begin
        l_PPDM := FieldByName('TDM').AsString;
        l_JJ := FieldByName('JJ').AsFloat;
        Have_Find := True;
        Break;
      end;
      Next;
    end;

    if Have_Find = False then
    begin
      GotoBookmark(cur_pos);
      while not Bof do
      begin
        if FieldByName('TS').AsInteger <> 0 then
        begin
          l_PPDM := FieldByName('TDM').AsString;
          l_JJ := FieldByName('JJ').AsFloat;
          Have_Find := True;
          Break;
        end;
        Prior;
      end;
    end;

    lbl_Search.Visible := False;
    pgb_State.Visible := True;
    lbl_State.Visible := True;
    lbl_State.Caption := '正在保存...';
    lbl_State.Refresh;
    pgb_State.Max := RecordCount;
    i := 0;

    cur_pos := GetBookmark;
    try
      Database.StartTransaction;
      First;

      while not Eof do
      begin
        if FieldByName('Temp').AsInteger = 1 then
        begin
          {如果写入数据库,则判断进价和销价是否符合}
          Can_Continue := True;
          l_failPPDM := FieldByName('TDM').AsString; //by jillshao 2002-06-13
          l_failJJ := FieldByName('JJ').AsFloat; //by jillshao 2002-08-14
          if FieldByName('TS').AsFloat <> 0 then
          begin
            if Test_JJ = False then
            begin
              Can_Continue := False;
              if Database.InTransaction then
                Database.Rollback;
              ds_init.DataSet := qry_init;
              DoFailLocate;
              CHQMsgBox('同一票品进价不能相同!');
            end;

            if Test_XJ = False then
            begin
              Can_Continue := False;
              if Database.InTransaction then
                Database.Rollback;
              ds_init.DataSet := qry_init;
              DoFailLocate;
              CHQMsgBox('其他库房已经存在该票品的不同销价!其价格为:' + FloatToStr(qry_Tmp.FieldByName('XJ').AsFloat / 100) + '元');
            end;

            if Can_Continue = False then
            begin
              if not (dgAlwaysShowEditor in rxdb_Init.Options) then
              begin
                rxdb_Init.Options := rxdb_Init.Options + [dgAlwaysShowEditor];
                rxdb_Init.Options := rxdb_Init.Options - [dgAlwaysShowEditor];
              end;
              rxdb_Init.SetFocus;
              FreeBookmark(cur_pos);
              EnableControls;
              pgb_State.Visible := False;
              lbl_State.Visible := False;
              lbl_Search.Visible := True;
              Result := False;
              Exit;
            end;

⌨️ 快捷键说明

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