📄 billbase.pas
字号:
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 + -