📄 ubasedata.pas
字号:
SetEditPriv(self);
// if DetailDS<>nil then begin
// Panel2.Visible := True;
// end;
end;
procedure TfBaseData.InitUI;
var
ShowPrice: Boolean;
begin
if pageCap='料件表' then begin
// ShowPrice := ccode='maint_price';
// if ShowPrice then
// SeSkinPageControl1.ActivePage.Caption := '料件单价表';
if ccode='report' then begin
SeSkinPanel1.Hide ;
end
end else if pageCap='成品与BOM表' then begin
// ShowPrice := ccode='maint_price';
// if ShowPrice then
// SeSkinPageControl1.ActivePage.Caption := '成品单价表';
// Panel2.Visible := not ShowPrice;
// if not Panel2.Visible then
// Panel1.Align := alClient;
if ccode='report' then begin
Q_BOM.Close;
SeSkinPanel2.Hide ;
Panel2.Hide ;
Panel1.Align := alClient;
end;
end;
if not (ccode='report') then SetDataCopyParam('sp','spno');
end;
procedure TfBaseData.PreparePage;
begin
pageCap := SeSkinPageControl1.ActivePage.Caption ;
if (pageCap='客户表') then begin
AManData := TManData.Create(SeSkinButton7,SeSkinButton8,Q_kh,'kh','khid,khname',SeSkinDBEdit10);
with Q_kh do begin
Close;
Parameters.ParamByName('khType').Value := 0;
Open;
end;
MasterDS := Q_kh;
wwDBNavigator1.DataSource := D_kh;
SetDataCopyParam('kh','khid');
end else if (pageCap='客户单价表') then begin
AManData := TManData.Create(SeSkinButton35,SeSkinButton36,Q_khPrice,'khPrice','',wwDBLookupCombo8);
Q_khPrice.Open;
MasterDS := Q_khPrice;
wwDBNavigator1.DataSource := D_khPrice;
SetDataCopyParam('khPrice','');
panPriceHist.Parent := panel7;
dgPriceHist.Parent := panel7;
end else if (pageCap='供应商单价表') then begin
AManData := TManData.Create(SeSkinButton40,SeSkinButton41,Q_supPrice,'khPrice','',wwDBLookupCombo1);
Q_supPrice.Open;
MasterDS := Q_supPrice;
wwDBNavigator1.DataSource := D_supPrice;
SetDataCopyParam('khPrice','');
end else if (pageCap='供应商表') then begin
AManData := TManData.Create(SeSkinButton23,SeSkinButton24,Q_kh,'kh','khid,khname',DBEdit26);
with Q_kh do begin
Close;
Parameters.ParamByName('khType').Value := 1;
Open;
end;
MasterDS := Q_kh;
wwDBNavigator1.DataSource := D_kh;
SetDataCopyParam('kh','khid');
end else if pageCap='币别表' then begin
AManData := TManData.Create(SeSkinButton27,SeSkinButton28,DM.T_Huobi,'HD_Huobi','HB01,HB02',DBEdit38);
DM.T_Huobi.Open;
MasterDS := DM.T_Huobi;
wwDBNavigator1.DataSource := DM.D_Huobi;
edCurr0.Text := GetGT('sys_curr');
end else if pageCap='付款条件' then begin
AManData := TManData.Create(SeSkinButton31,SeSkinButton32,DM.T_PayTerm,'PayTerm','ptName',DBEdit41);
DM.T_PayTerm.Open;
MasterDS := DM.T_PayTerm;
wwDBNavigator1.DataSource := DM.D_PayTerm;
SetDataCopyParam('PayTerm','');
end else if pageCap='料件表' then begin
FillItems(JvDBComboBox3.Items,'select spunit from unit order by 1');
AManData := TManData.Create(SeSkinButton3,SeSkinButton4,Q_lj,'sp','spno',wwDBLookupCombo11);
Q_lj.Open;
MasterDS := Q_lj;
wwDBNavigator1.DataSource := D_lj;
InitUI;
end else if pageCap='成品与BOM表' then begin
FillItems(JvDBComboBox2.Items,'select spunit from unit order by 1');
AManData := TManData.Create(SeSkinButton9,SeSkinButton10,Q_CP,'sp','spno',DBEdit12);
AManData2 := TManData.Create(SeSkinButton13,SeSkinButton14,Q_BOM,'DATASET','ljno',wwDBLookupCombo2);
Q_CP.Open;
Q_BOM.Open;
MasterDS := Q_CP;
DetailDS := Q_BOM;
wwDBNavigator1.DataSource := D_CP;
InitUI;
// wwDBNavigator2.DataSource := D_BOM;
// wwDBNavigator2.Visible := True;
end else if pageCap='物料需求表' then begin
AManData := TManData.Create(SeSkinButton18,SeSkinButton19,Q_mrp,'','',DBEdit4);
if ccode='-1' then begin //选择
Q_mrpchecked.FieldKind := fkData;
Q_mrpid.FieldKind := fkData;
JvDBGrid5.Columns[0].Visible := True;
SeSkinPanel5.Visible := False;
sbOK.Visible := True;
sbOK.OnClick := sbOKClick;
DropTempTables('#jack');
ExecQuery('select checked=0,id=identity(int,1,1),* into #jack from mrp');
Q_mrp.SQL.Text := 'select * from #jack where QtyLeft>0 order by poid desc';
end else if ccode<>'' then //按订单号过滤
Q_mrp.SQL.Text := Format('select * from mrp where QtyLeft>0 and poid=%s order by poid desc'
,[QuotedStr(ccode)])
else
Q_mrp.SQL.Text := 'select * from mrp where QtyLeft>0 order by poid desc';
Q_mrp.Open;
MasterDS := Q_mrp;
wwDBNavigator1.DataSource := D_mrp;
end
;
end;
procedure TfBaseData.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if pageCap='客户表' then begin
ReopenDataset(DM.QDM_KH);
end else if pageCap='供应商表' then begin
ReopenDataset(DM.QDM_sup);
end else if pageCap='料件表' then begin
ReopenDataset(DM.QDM_LJ);
end else if pageCap='成品与BOM表' then begin
ReopenDataset(DM.QDM_CP);
end
end;
procedure TfBaseData.SeSkinButton1Click(Sender: TObject);
begin
inherited;
if AManData<>nil then
AManData.SaveData;
end;
procedure TfBaseData.SeSkinButton2Click(Sender: TObject);
begin
inherited;
if AManData<>nil then
AManData.Cancel;
end;
procedure TfBaseData.Q_khNewRecord(DataSet: TDataSet);
begin
inherited;
if pageCap='客户表' then
DataSet.FieldByname('khType').AsInteger := 0
else if pageCap='供应商表' then
DataSet.FieldByname('khType').AsInteger := 1
end;
procedure TfBaseData.Q_LJNewRecord(DataSet: TDataSet);
begin
inherited;
DataSet.FieldByname('spType').AsInteger := 0;
DataSet.FieldByname('spunit').AsString := 'pcs';
end;
procedure TfBaseData.Q_CPNewRecord(DataSet: TDataSet);
begin
inherited;
DataSet.FieldByname('spType').AsInteger := 1;
DataSet.FieldByname('spunit').AsString := 'pcs';
end;
procedure TfBaseData.Q_BOMNewRecord(DataSet: TDataSet);
begin
inherited;
DataSet.FieldByname('spno').AsString := Q_CP.FieldByname('spno').AsString ;
DataSet.FieldByname('Qty').AsFloat := 1;
end;
procedure TfBaseData.SeSkinButton15Click(Sender: TObject);
begin
inherited;
if AManData2<>nil then begin
if AManData.CurDadaset.State = dsInsert then
AManData.SaveData;
AManData2.SaveData;
end;
end;
procedure TfBaseData.SeSkinButton16Click(Sender: TObject);
begin
inherited;
if AManData2<>nil then
AManData2.Cancel;
end;
procedure TfBaseData.JvDBComboBox2Exit(Sender: TObject);
var
cb: TJvDBComboBox;
begin
cb := TJvDBComboBox(Sender);
if trim(cb.Text)='' then exit;
if cb.Items.IndexOf(cb.Text)=-1 then begin
cb.Items.Add(cb.Text);
ExecQuery('if not exists(select 1 from unit where spunit=%0:s)'
+ ' insert into unit(spunit) values (%0:s)'
,[QuotedStr(cb.Text)]);
end;
end;
procedure TfBaseData.SeSkinButton22Click(Sender: TObject);
var
cb: TJvDBComboBox;
begin
inherited;
if sender=SeSkinButton22 then
cb := JvDBComboBox2
else if sender=SeSkinButton17 then
cb := JvDBComboBox3
else
Exit;
if trim(cb.Text)='' then exit;
if not sure('确定要删除单位 '+ cb.Text +' 吗?') then exit;
if cb.ItemIndex >-1 then begin
ExecQuery('delete from unit where spunit=%0:s'
,[QuotedStr(cb.Text)]);
cb.Items.Delete(cb.ItemIndex);
end;
cb.Text := '';
end;
procedure TfBaseData.Q_CPBeforeDelete(DataSet: TDataSet);
begin
inherited;
// { TODO : 判断成品是否被单据引用 }
//先删除BOM明细,再删除成品本身
ExecQuery('delete from bom where spno=%s'
,[QuotedStr(DataSet.FieldByName('spno').AsString)]);
end;
procedure TfBaseData.Q_LJBeforeDelete(DataSet: TDataSet);
begin
inherited;
// { TODO : 判断料件是否被单据引用 }
end;
procedure TfBaseData.Q_khBeforeDelete(DataSet: TDataSet);
begin
inherited;
// { TODO : 判断厂商是否被单据引用 }
end;
procedure TfBaseData.Q_mrpqtyNeedChange(Sender: TField);
begin
inherited;
with Q_mrp do
FieldByName('QtyLeft').AsFloat := FieldByName('QtyNeed').AsFloat
- FieldByName('QtyPO').AsFloat
end;
procedure TfBaseData.JvDBGrid5CellClick(Column: TColumn);
begin
inherited;
if Column.FieldName='checked' then
with Q_mrp do begin
Edit;
if FieldByName('checked').AsInteger=1 then
FieldByName('checked').AsInteger := 0
else
FieldByName('checked').AsInteger := 1 ;
Post;
end;
end;
procedure TfBaseData.Q_mrpcheckedGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
inherited;
if Sender.AsInteger=1 then
Text := '√'
else
Text := ''
end;
procedure TfBaseData.sbOKClick(Sender: TObject);
begin
sRet := '';
with Q_mrp do begin
first;
while not eof do begin
if FieldBYName('checked').AsInteger=1 then
sRet := sRet + ',' + FieldBYName('id').AsString;
next;
end;
end;
Delete(sRet,1,1);
close;
end;
procedure TfBaseData.FloatField1Change(Sender: TField);
begin
inherited;
with Q_CP do
FieldByName('Price0').AsFloat := FieldByName('spprice').AsFloat
* DM.T_Huobi.FieldByName('HB04').AsFloat
end;
procedure TfBaseData.Q_BOMAfterPost(DataSet: TDataSet);
var
cpprice0, cpprice: Double;
begin
inherited;
// //按耗用自动计算成品单价
// DropTempTables;
// with GetQuery(GetSQLText('ReCalcProdPrice','MISC')
// ,[QuotedStr(Q_CP.FieldByName('spno').AsString)]) do
// begin
// cpprice0 := FieldByName('cpprice0').AsFloat;
// cpprice := FieldByName('cpprice').AsFloat;
// end;
//
// with Q_CP do
// if FieldByName('price0').AsFloat <> cpprice0 then begin
// Edit;
// FieldByName('price0').AsFloat := cpprice0;
// FieldByName('spprice').AsFloat := cpprice;
// Post;
// end;
end;
procedure TfBaseData.FloatField9Change(Sender: TField);
begin
inherited;
with Sender.DataSet do
FieldByName('Price0').AsFloat := FieldByName('price').AsFloat
* DM.T_Huobi.FieldByName('HB04').AsFloat
end;
procedure TfBaseData.Q_supPriceNewRecord(DataSet: TDataSet);
begin
inherited;
with DataSet do
FieldByName('rid').AsString := GetID;
end;
procedure TfBaseData.Q_supPriceBeforePost(DataSet: TDataSet);
var
s: string;
begin
inherited;
//检查商品和供应商组合是否已经存在
with GetQuery('select price from khPrice where khid=%0:s and spno=%1:s and rid<>%2:s'
,[QuotedStr(DataSet.FieldByName('khid').AsString)
,QuotedStr(DataSet.FieldByName('spno').AsString)
,QuotedStr(DataSet.FieldByName('rid').AsString)
])
do
if not Fields[0].IsNull then begin
if DataSet=Q_supPrice then
s:= '供应商 %s 的料件'
else
s:= '客户 %s 的成品';
abortMsg(Format(s + ' %s 单价已经存在:%s !'
,[DataSet.FieldByName('khname').AsString
,DataSet.FieldByName('spno').AsString
,Fields[0].AsString
]));
end;
end;
procedure TfBaseData.SeSkinButton39Click(Sender: TObject);
begin
inherited;
bShowPriceHist := not bShowPriceHist;
if bShowPriceHist then begin
TSeSkinButton(Sender).Caption := '隐藏单价历史';
if pageCap='供应商单价表' then begin
Q_priceHist.Close ;
Q_priceHist.DataSource := D_supPrice;
Q_priceHist.Open ;
Panel5.Show ;
end else if pageCap='客户单价表' then begin
Q_priceHist.Close ;
Q_priceHist.DataSource := D_khPrice;
Q_priceHist.Open ;
Panel7.Show ;
end
end else begin
TSeSkinButton(Sender).Caption := '显示单价历史';
Q_priceHist.DataSource := nil;
Q_priceHist.Close ;
Panel5.Hide ;
Panel7.Hide ;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -