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

📄 billbase.pas

📁 产品信息系统!关于产品基础信息的系统!功能强大!
💻 PAS
📖 第 1 页 / 共 2 页
字号:
procedure TfrmBillBase.acModifyExecute(Sender: TObject);
begin
  inherited;
  QMaster.Edit;
end;

procedure TfrmBillBase.acDeleteExecute(Sender: TObject);
begin
  inherited;
  if QMaster.RecordCount > 0 then
    if Messagedlg('您确定要删除当前单据吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
      QMaster.Delete;
end;

procedure TfrmBillBase.acSaveExecute(Sender: TObject);
begin
  inherited;
  if QMaster.State in [dsInsert, dsEdit] then
    QMaster.Post;
end;

procedure TfrmBillBase.acCancelExecute(Sender: TObject);
begin
  inherited;
  if Messagedlg('您确定要取消修改吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
    QMaster.Cancel;
end;

procedure TfrmBillBase.acAddLineExecute(Sender: TObject);
begin
  inherited;
  QDetail.Append;
end;

procedure TfrmBillBase.acDelLineExecute(Sender: TObject);
begin
  inherited;
  if QDetail.RecordCount > 0 then
    QDetail.Delete;
end;

procedure TfrmBillBase.QMasterBeforePost(DataSet: TDataSet);
begin
  inherited;
  if QMaster.State = dsInsert then
  begin
    //取外部单号NO
    try
      with spGetOutNumber do
      begin
        parameters.ParamValues['@BillType'] := iBillTypeID;
        Execproc;
      end;
    except
      on E: Exception do
      begin
        Messagedlg('取单据号失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
        abort;
      end;
    end;
    QMaster.FieldbyName('fNO').asString :=
      Trim(spGetOutNumber.parameters.ParamValues['@OutNumber']);
  end;

  //取消主从关系
  QDetail.DataSource := nil;

  //开启事务
  if not dmClient.adocnClothing.InTransaction then
    dmClient.adocnClothing.BeginTrans;

  //如果是编辑状态,保存从表数据
  {if QMaster.State = dsEdit then
  begin
    bInsert:=False;
    Try
     QDetail.UpdateBatch();
    Except
    On E:Exception do
       Begin
       MessageDlg('存盘失败!'+#13#10+E.Message,mtError,[mbOk],0);
       Abort;
       end;
    End;
  end
  else
    bInsert:=True; }

end;

procedure TfrmBillBase.QMasterAfterPost(DataSet: TDataSet);
begin
  inherited;
  //如果是插入状态,保存从表数据
  //if bInsert then
  //begin
  try
    QDetail.UpdateBatch();
  except
    on E: Exception do
    begin
      Messagedlg('存盘失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
      QMaster.Edit;
      abort;
    end;
  end;
  //end;

  {提交事务}
  if dmClient.adocnClothing.InTransaction then
    dmClient.adocnClothing.CommitTrans;
  //恢复主从关系
  QDetail.DataSource := dsMaster;
end;

procedure TfrmBillBase.QMasterBeforeDelete(DataSet: TDataSet);
begin
  inherited;
  {开启事务}
  if not dmClient.adocnClothing.InTransaction then
    dmClient.adocnClothing.BeginTrans;
end;

procedure TfrmBillBase.QMasterAfterDelete(DataSet: TDataSet);
begin
  inherited;
  {提交事务}
  if dmClient.adocnClothing.InTransaction then
    dmClient.adocnClothing.CommitTrans;
end;

procedure TfrmBillBase.QMasterPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
  {提示错误描述信息和错误原码}
  Messagedlg('存盘失败!' + GetErrorInfo(E), mtError, [mbOk], 0);
  Action := daAbort;                    //终止存盘
  {回滚事务}
  {if dmClient.adocnClothing.InTransaction then
     dmClient.adocnClothing.RollbackTrans ;}
end;

procedure TfrmBillBase.QMasterDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
  inherited;
  {提示错误描述信息和错误原码}
  Messagedlg('删除失败!' + GetErrorInfo(E), mtError, [mbOk], 0);
  Action := daAbort;                    //终止存盘
  {回滚事务}
  {if dmClient.adocnClothing.InTransaction then
     dmClient.adocnClothing.RollbackTrans ;}
end;

procedure TfrmBillBase.FormCreate(Sender: TObject);
begin
  inherited;
  GetPermiss;
  if not QMaster.Active then
    QMaster.Open
  else
    dsMasterStateChange(Sender);        {调用状态变化过程}
  if not QDetail.Active then QDetail.Open;
end;

procedure TfrmBillBase.QMasterAfterInsert(DataSet: TDataSet);
begin
  inherited;
  //取内部单号ID
  try
    with spGetInNumber do
    begin
      parameters.ParamValues['@BillType'] := iBillTypeID;
      Execproc;
    end;
  except
    on E: Exception do
    begin
      Messagedlg('新增单据失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
      abort;
    end;
  end;
  QMaster.FieldbyName('fID').asInteger :=
    spGetInNumber.parameters.ParamValues['@InNumber'];
  QMaster.FieldbyName('fMaker').asString := G_sUserName;
  QMaster.FieldbyName('fDate').asDatetime := Date();

  //取消主从关系
  QDetail.DataSource := nil;
end;

procedure TfrmBillBase.QDetailBeforePost(DataSet: TDataSet);
begin
  inherited;
  if QDetail.State = dsInsert then
    QDetail.FieldbyName('fID').asInteger := QMaster.FieldbyName('fID').asInteger;
end;

procedure TfrmBillBase.QMasterAfterCancel(DataSet: TDataSet);
begin
  inherited;
  //恢复主从关系
  QDetail.DataSource := dsMaster;
  {回滚事务}
  if dmClient.adocnClothing.InTransaction then
    dmClient.adocnClothing.RollbackTrans;
end;

procedure TfrmBillBase.QDetailAfterInsert(DataSet: TDataSet);
begin
  inherited;
  wwDGDetail.SelectedIndex := 0;
end;

procedure TfrmBillBase.acConfirmExecute(Sender: TObject);
begin
  inherited;
  if acConfirm.Caption = '审核' then
  begin
    if Messagedlg('你确定要审核当前单据吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
    begin
      screen.Cursor := crHourGlass;
      try
        QMaster.Edit;
        QMaster.FieldValues['fSubmitFlag'] := 1;
        QMaster.FieldbyName('fSubmitDate').asDatetime := Date();
        QMaster.FieldbyName('fSubmitUser').asString := G_sUserName;
        QMaster.Post;
      except
        on E: Exception do
        begin
          screen.Cursor := crDefault;
          Messagedlg('操作失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
          exit;
        end;
      end;
      screen.Cursor := crDefault;
    end;
  end
  else
  begin
    if Messagedlg('你确定要弃审当前单据吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
    begin
      screen.Cursor := crHourGlass;
      try
        QMaster.Edit;
        QMaster.FieldValues['fSubmitFlag'] := 0;
        QMaster.FieldbyName('fSubmitDate').asDatetime := Date;
        QMaster.FieldbyName('fSubmitUser').asString := G_sUserName;
        QMaster.Post;
      except
        on E: Exception do
        begin
          screen.Cursor := crDefault;
          Messagedlg('操作失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
          exit;
        end;
      end;
      screen.Cursor := crDefault;
    end;
  end;
end;

procedure TfrmBillBase.acCounteractExecute(Sender: TObject);
var
  sCancelNO         : string;
  iCancelID         : Integer;
begin
  inherited;
  iCancelID := 0;
  if Messagedlg('你确定要冲消当前单据吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
  begin
    screen.Cursor := crHourGlass;
    try
      with spCounteract do
      begin
        parameters.ParamValues['@BillTypeID'] := iBillTypeID;
        parameters.ParamValues['@InBillID'] := QMaster.FieldbyName('fID').asInteger;
        parameters.ParamValues['@CancelUser'] := G_sUserName;
        Execproc;
        sCancelNO := parameters.ParamValues['@OutBillNo'];
        iCancelID := parameters.ParamValues['@OutBillID'];
      end;

      QMaster.Edit;
      QMaster.FieldValues['fCancelFlag'] := 1;
      QMaster.FieldbyName('fCancelDate').asDatetime := Date();
      QMaster.FieldbyName('fCancelUser').asString := G_sUserName;
      QMaster.FieldbyName('fCancelNO').asString := sCancelNO;
      QMaster.FieldbyName('fBeCancel').asBoolean := True;
      QMaster.Post;
    except
      on E: Exception do
      begin
        screen.Cursor := crDefault;
        Messagedlg('操作失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;
    QMaster.Requery();
    QMaster.Locate('fID', iCancelID, []);
    screen.Cursor := crDefault;
  end;
end;

procedure TfrmBillBase.acFinishExecute(Sender: TObject);
begin
  inherited;
  if Messagedlg('你确定要结算当前单据吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
  begin
    screen.Cursor := crHourGlass;
    try
      QMaster.Edit;
      QMaster.FieldValues['fFinishFlag'] := 1;
      QMaster.FieldbyName('fFinishDate').asDatetime := Date();
      QMaster.FieldbyName('fFinishUser').asString := G_sUserName;
      QMaster.Post;
    except
      on E: Exception do
      begin
        screen.Cursor := crDefault;
        Messagedlg('操作失败!' + #13#10 + E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;
    screen.Cursor := crDefault;
  end;
end;

procedure TfrmBillBase.QMasterBeforeCancel(DataSet: TDataSet);
begin
  inherited;
  QDetail.CancelBatch();
end;

procedure TfrmBillBase.acPrintExecute(Sender: TObject);
begin
  inherited;
  //QDetail.DisableControls ;
  //ppReport.Print ;
  //QDetail.EnableControls ;
end;

procedure TfrmBillBase.wwDBLKProductCodeDblClick(Sender: TObject);
var
  iProductID        : Integer;
begin
  inherited;
  if QMaster.State in [dsInsert, dsEdit] then
  begin
    iProductID := frmProductFilter.ShowModal;
    if iProductID > 0 then
    begin
      if not (QDetail.State in [dsInsert, dsEdit]) then QDetail.Edit;
      QDetail.FieldbyName('fResID').asInteger := iProductID;
    end
  end;
end;

end.

⌨️ 快捷键说明

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