📄 ubill_base.pas
字号:
Panel2.Enabled:=True;
Panel3.Enabled:=True;
QryMaster.FieldByName('nBillID').AsString:=TmpBillID;
QryMaster.FieldByName('nYwType').AsString:=Caption;
QryMaster.FieldByName('nDateRk').AsString:=frmmain.BM.bmDate;
QryMaster.FieldByName('nYwMan').AsString:=frmmain.BM.bmMan;
// QryDetail.MasterSource:=nil;
// QryDetail.Refresh;
{ QryDetail.Filtered:=false;
QryDetail.FilterGroup:=fgPendingRecords;
QryDetail.Filtered:=True; }
end;
procedure TfrmBill_Base.QryMasterAfterEdit(DataSet: TDataSet);//Pass
begin
// MasterPost:=false;
Panel2.Enabled:=True;
Panel3.Enabled:=True;
end;
procedure TfrmBill_Base.BtnCancelClick(Sender: TObject); //Pass
begin
if DS<>dsNone then
begin
// QryDetail.Cancel;
// QryMaster.Cancel; \
try
CanScroll:=false;
QryMaster.CancelBatch;
//====================================================
if DBGridEh1.DataSource = nil then exit;
//====================================================
QryDetail.CancelBatch;
finally
CanScroll:=true;
end;
// MasterPost:=true;
Panel2.Enabled:=False;
if DS=dsChange then
begin
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=1;
Proc_NewBill.ExecProc;
end;
DS:=dsNone;
end;
Panel2.Enabled:=false;
Panel3.Enabled:=false;
end;
procedure TfrmBill_Base.BtnAddClick(Sender: TObject); //Pass
begin
if DS=dsNone then
begin
GetTmpBillID;
QryMaster.Insert;
DS:=dsAdd;
end else
if DS=dsAdd then
begin
BtnSaveClick(Sender);
if DS<>dsNone then Exit;//保存出错
DS:=dsAdd;
GetTmpBillID;
QryMaster.Insert;
end else
if Application.MessageBox('是否保存刚刚修改的数据','提示',33)=1 then
begin
BtnSaveClick(Sender);
if DS<>dsNone then Exit;//保存出错
GetTmpBillID;
QryMaster.Insert;
DS:=dsAdd;
end else
begin
BtnCancelClick(Sender);
GetTmpBillID;
QryMaster.Insert;
DS:=dsAdd;
end;
Edit1.SetFocus;
DBGridEh1.DataSource := nil;
end;
procedure TfrmBill_Base.BtnChangeClick(Sender: TObject); //Pass
begin
if QryMaster.RecordCount=0 then Exit;
if DBGridEh1.DataSource=nil then
DBGridEh1.DataSource := DataSource2;
FullGd(QryLoadField,DBGridEh1,RepOrder.Caption,1,trim(DBEdit3.text));
if trim(QryMaster.FieldByName('nShMan').AsString)<>'' then
begin
Application.MessageBox('该单据已审核,不能修改','提示',64);
Exit;
end;
With ProcCanChange do
begin
Close;
Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Parameters.ParamByName('@CanChange').Value:='Y';
ExecProc;
// showmessage(Parameters.ParamByName('@CanChange').Value );
if trim(Parameters.ParamByName('@CanChange').Value)='N' then
begin
Application.MessageBox('单据冲突,该单据不能修改。'+#13+'如要修改,建议使用红字单据回冲','提示',64);
Exit;
end;
end;
if DS=dsNone then
begin
QryMaster.Edit;
DS:=dsChange;
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=0;
Proc_NewBill.ExecProc;
end else
if Application.MessageBox('是否保存刚刚修改的数据','提示',33)=1 then
begin
BtnSaveClick(Sender);
if DS=dsNone then
begin
DS:=dsChange;
QryMaster.Edit;
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=0;
Proc_NewBill.ExecProc;
end else Exit;
end else
begin
BtnCancelClick(Sender);
DS:=dsChange;
QryMaster.Edit;
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=0;
Proc_NewBill.ExecProc;
end;
end;
procedure TfrmBill_Base.BtnSaveClick(Sender: TObject); //Pass
var
NewCode:String;
iCount,i:integer;
begin
if (QryDetail.state=dsEdit) or (QryDetail.state=dsInsert) then
QryDetail.Post;
case DS of
dsNone:
begin
Application.MessageBox('当前没有进入编辑状态','提示',64);
Exit;
end;
dsAdd:
begin
if QryDetail.RecordCount=0 then
begin
Application.MessageBox('单据细节不能为空','提示',64);
DBGridEh1.SetFocus;
Exit;
end;
With QryDetail do
begin
First;
While not Eof do
begin
if not (NoError()) then
begin
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[i].FieldName=qryDetail.Fields[ErrorField].FieldName then
Begin
DBGridEh1.SelectedIndex:=i;
Break;
end;
end;
DBGridEh1.SetFocus;
ErrorField:=-1;
Exit;
end;
Next;
end;
end;
ADOProc1.Close;
ADOProc1.Parameters.ParamByName('@Type').Value:=Caption;
ADOProc1.Parameters.ParamByName('@nDate').Value:=frmMain.BM.bmDate;
ADOProc1.Parameters.ParamByName('@Code').Value:='aa';
try
LocalCon.BeginTrans;
ADOProc1.ExecProc;
NewCode:=trim(ADOProc1.Parameters.ParamByName('@Code').Value);
if TmpBillID<>NewCode then
begin
QryDetail.First;
iCount:=QryDetail.RecordCount;
for i:=0 to iCount-1 do
begin
if QryDetail.State=dsBrowse then
QryDetail.Edit;
QryDetail.FieldByName('nBillid').AsString:= NewCode;
QryDetail.Post;
QryDetail.Next;
end;
QryMaster.FieldByName('nBillID').AsString:=NewCode;
QryMaster.Post;
end;
try
CanScroll:=False;
if RepOrder.Caption = '7' then
begin
ADOQSFtype.close;
ADOQSFtype.sql.Add('select nSFTCode,nSFName from s_SFtype where nSFName=:PnSFName');
ADOQSFtype.Parameters.ParamByName('PnSFName').value:='前期数据';
ADOQSFtype.open;
QryMaster.FieldByName('nSfTtype').AsString:=ADOQSFtype.FieldByName('nSFTCode').asstring;
ADOQSFtype.close;
end;
QryMaster.UpdateBatch;
QryDetail.UpdateBatch;
CanScroll:=true;
Application.MessageBox('保存成功','提示',64);
panel2.Enabled:=false;
Panel3.Enabled:=false;
Except
CanScroll:=true;
Application.MessageBox('保存失败,请重试','提示',64);
LocalCon.RollbackTrans;
DS:=dsAdd;
Exit;
end;
ADOProc2.Parameters.ParamByName('@Type').Value:=
ADOProc1.Parameters.ParamByName('@Type').Value;
ADOProc2.Parameters.ParamByName('@nDate').Value:=
ADOProc1.Parameters.ParamByName('@nDate').Value;
ADOProc2.ExecProc;
localcon.CommitTrans;
Panel2.Enabled:=false;
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=1;
Proc_NewBill.ExecProc;
except
localcon.RollbackTrans;
end;
end;
dsChange:
begin
try
QryMaster.UpdateBatch;
QryDetail.UpdateBatch;
except
Application.MessageBox('保存失败,请重试','提示',64);
DS:=dsChange;
Exit;
end;
Panel2.Enabled:=false;
Proc_NewBill.Close;
Proc_NewBill.Parameters.ParamByName('@BillID').Value:=DBEdit1.Text;
Proc_NewBill.Parameters.ParamByName('@AddOrDel').Value:=1;
Proc_NewBill.ExecProc;
end;
end;
DS:=dsNone;
end;
//==========================================
procedure TfrmBill_Base.DBGridEh1ColEnter(Sender: TObject); //Pass
var
i:integer;
begin
DBGridEh1.Options:=DBGridEh1.Options+[dgEditing];
if DS=dsNone then
begin
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
Exit;
end;
if (ErrorField<>-1) and (ErrorField<>DBGridEh1.SelectedIndex) then
begin
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[i].FieldName=QryDetail.Fields[ErrorField].FieldName then
begin
DBGridEh1.SelectedIndex:=i;
Break;
end;
end;
ErrorField:=-1;
end else
begin
if (trim(DBGridEh1.Columns[DBGridEh1.SelectedIndex].FieldName)='nbatch')
and (not QryDetail.FieldByname('bBatch').AsBoolean) then
begin
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
Exit;
end;
if (trim(DBGridEh1.Columns[DBGridEh1.SelectedIndex].FieldName)='nPosition') then
begin
if DBGridEh1.Columns[DBGridEh1.SelectedIndex].PickList.Count<=0 then
begin
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
Exit;
end;
end;
{ if (trim(DBGridEh1.Columns[DBGridEh1.SelectedIndex].FieldName)='nColor')
and (not QryDetail.FieldByname('bColor').AsBoolean) then
begin
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
Exit;
end; }
end;
end;
procedure TfrmBill_Base.DBGridEh1GetEditText(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
{ if bCanEdit(ACol-1) then
begin
DBGridEh1.Columns[ACol-1].ReadOnly:=false;
QryDetail.Edit;
end
else
DBGridEh1.Columns[ACol-1].ReadOnly:=true;
{ if (Value<>'') and (QryDetail.FieldByName(DBGridEh1.Columns[ACol-1].FieldName).AsString<>Value) then
begin
QryDetail.Edit;
QryDetail.FieldByName(DBGridEh1.Columns[ACol-1].FieldName).AsString:=Value;
QryDetail.Post;
// end; }
end;
function TfrmBill_Base.bCanEdit(iCol:Integer): Boolean;
begin
Result:=false;
{ if (iCol=1) or (iCol=5) or (iCol=6) then
begin
Result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nGoodCode' then
begin
result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nFsCount' then
begin
result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nfsprice' then
begin
result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nMemo' then
begin
result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nCus1' then
begin
result:=true;
Exit;
end;
if DBGridEh1.Columns[iCol].FieldName='nCus2' then
begin
result:=true;
Exit;
end;
if (GDI.bBatch) and (UpperCase(trim(DBGridEh1.Columns[iCol].FieldName))=UpperCase('nbatch')) then
begin
result:=true;
Exit;
end;
if (GDI.bColor) and (UpperCase(trim(DBGridEh1.Columns[iCol].FieldName))=UpperCase('ncolor')) then
begin
result:=true;
Exit;
end;
if (DBGridEh1.Columns[iCol].PickList.Count>1) and (UpperCase(trim(DBGridEh1.Columns[iCol].FieldName))=UpperCase('nPosition')) then
begin
result:=true;
Exit;
end; }
end;
procedure TfrmBill_Base.BtnAuditingClick(Sender: TObject); //Pass
var
Audi_Man:String;
TmpI:integer;
begin
if (QryDetail.State=dsBrowse) and (QryMaster.State=dsBrowse) and (DS=dsNone) then
begin
if btnAuditing.Caption='审核' then
begin
Audi_Man:=frmmain.BM.bmMan;
btnAuditing.Caption:='弃审';
end else
begin
Audi_Man:='';
btnAuditing.Caption:='审核';
end;
QryMaster.Edit;
QryMaster.FieldByName('nShMan').AsString:=Audi_Man;
QryMaster.Post;
try
QryMaster.UpdateBatch;
except
QryMaster.CancelBatch;
Application.MessageBox('操作失败','提示',64);
if btnAuditing.Caption='审核' then
begin
btnAuditing.Caption:='弃审';
end else
begin
btnAuditing.Caption:='审核';
end;
end;
end else
begin
tmpI:=Application.MessageBox('是否保存刚刚修改过的数据?','提示',35);
if tmpI=6 then
begin
BtnSaveClick(Sender);
if DS=dsNone then BtnAuditingClick(Sender);
end else
if tmpI=7 then
begin
BtnCancelClick(Sender);
if DS=dsNone then BtnAuditingClick(Sender);
end else
begin
Exit;
end;
end;
end;
procedure TfrmBill_Base.QryDetailnfspriceSetText(Sender: TField; //Pass
const Text: String);
begin
if QryDetail.FieldByName('nFsCount').AsFloat<>0 then
if text='' then
QryDetail.FieldByName('nFsJine').Value:=0
else
QryDetail.FieldByName('nFsJine').Value:=StrToFloat(Text)*QryDetail.FieldByName('nFsCount').AsFloat;
// QryDetail.FieldByName('nFsJine').Value:=formatfloat('#0.00',
// StrToFloat(Text)*QryDetail.FieldByName('nFsCount').AsFloat);
QryDetail.FieldByName('nfsprice').AsString:=Text;
end;
procedure TfrmBill_Base.QryDetailnFsCountSetText(Sender: TField; //Pass
const Text: String);
begin
if QryDetail.FieldByName('nfsprice').AsFloat<>0 then
if text='' then
QryDetail.FieldByName('nFsJine').Value:=0
else
QryDetail.FieldByName('nFsJine').Value:=StrToFloat(Text)*QryDetail.FieldByName('nfsprice').AsFloat;
// QryDetail.FieldByName('nFsJine').Value:=formatfloat('#0.00',
// StrToFloat(Text)*QryDetail.FieldByName('nfsprice').AsFloat);
QryDetail.FieldByName('nFsCount').AsString:=Text;
if RepOrder.Caption = '7' then
begin
if QryDetail.FieldByName('nFsCount').AsFloat<>0 then
if text='' then
QryDetail.FieldByName('nfsprice').Value:=0
else
QryDetail.FieldByName('nfsprice').Value:=QryDetail.FieldByName('nFsJine').AsFloat/StrToFloat(Text);
// QryDetail.FieldByName('nFsJine').Value:=formatfloat('#0.00',
// StrToFloat(Text)*QryDetail.FieldByName('nFsCount').AsFloat);
QryDetail.FieldByName('nFsCount').AsString:=Text;
end;
end;
procedure TfrmBill_Base.GetTmpBillID; //
begin
ADOProc3.Close;
ADOProc3.Parameters.ParamByName('@Type').Value:=Caption;
ADOProc3.Parameters.ParamByName('@nDate').Value:=frmMain.BM.bmDate;
ADOProc3.Parameters.ParamByName('@Code').Value:='aa';
ADOProc3.ExecProc;
TmpBillID:=trim(ADOProc3.Parameters.ParamByName('@Code').Value);
end;
procedure TfrmBill_Base.QryMasterAfterScroll(DataSet: TDataSet); //Pass
begin
if CanScroll then
begin
if Trim(QryMaster.FieldByName('nShMan').AsString)='' then
BtnAuditing.Caption:='审核'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -