📄 udj.pas
字号:
procedure SetBtnStateMRP;
function GetInvNewID(const invTypeA:string):string;
function GetPrice(const khid, spno: string): double;
{ Private declarations }
public
{ Public declarations }
procedure SetFormControls;
end;
const
invTypeArr: array[1..12,1..5] of string=(
//库存单据类别、进出类别、商品类别、客户供应商类别,单据类别代码
('外发加工领料','-1','0','0','WFLL'),
('外发加工退料','1','0','0','WFTL'),
('外发加工退货','-1','1','0','WFTH'),
('外发加工入库','1','1','0','WFRK'),
('车间领料','-1','0','0','CJLL'),
('车间退料','1','0','0','CJTL'),
('车间入库','1','1','0','CJRK'),
('成品发货','-1','1','1','CPFH'),
('成品退货','1','1','1','CPTH'),
('购料入库','1','0','-1','GLRK'),
('购料退货','-1','0','-1','GLTH'),
('来料待检','0','0','-1','LLDJ')
);
var
frmDJ: TfrmDJ;
curPageIndex: integer;
invType: string; //进出仓类别
implementation
{$R *.dfm}
uses uDM, uManData,uFunc, uPrn, uMain, uBaseData;
var
AManData,AManData2: TManData;
procedure TfrmDJ.FormShow(Sender: TObject);
begin
// DM.SaveFormPriv;
HidePageTabs(SeSkinPageControl1);
SeSkinPageControl1.ActivePage := SeSkinPageControl1.Pages[curPageIndex];
PreparePage;
ActivateCtrlDataset(SeSkinPageControl1);
Caption := Caption + ' - ' + SeSkinPageControl1.ActivePage.Caption ;
if (pageCap='成品进出仓') or (pageCap='料件进出仓') then
Caption := Caption + ' - ' + invType;
SetFormControls;
end;
procedure TfrmDJ.SetFormControls;
begin
SeSkinButton3.Enabled := GUserCanC;
SeSkinButton13.Enabled := GUserCanC;
SeSkinButton1.Enabled := GUserCanC;
SeSkinButton12.Enabled := GUserCanC;
SeSkinButton21.Enabled := GUserCanC;
SeSkinButton26.Enabled := GUserCanC;
SeSkinButton35.Enabled := GUserCanC;
SeSkinButton42.Enabled := GUserCanC;
SeSkinButton46.Enabled := GUserCanC;
SeSkinButton53.Enabled := GUserCanC;
SeSkinButton20.Enabled := GUserCanC;
SeSkinButton32.Enabled := GUserCanC;
SeSkinButton4.Enabled := GUserCanD;
SeSkinButton14.Enabled := GUserCanD;
SeSkinButton2.Enabled := GUserCanD;
SeSkinButton17.Enabled := GUserCanD;
SeSkinButton22.Enabled := GUserCanC;
SeSkinButton27.Enabled := GUserCanD;
SeSkinButton36.Enabled := GUserCanD;
SeSkinButton43.Enabled := GUserCanD;
SeSkinButton47.Enabled := GUserCanD;
SeSkinButton54.Enabled := GUserCanD;
// SeSkinButton27.Enabled := GUserCanE;
// SeSkinButton28.Enabled := GUserCanE;
// SeSkinButton29.Enabled := GUserCanE;
// SeSkinButton30.Enabled := GUserCanE;
// SeSkinButton31.Enabled := GUserCanE;
// SeSkinButton32.Enabled := GUserCanE;
SetEditPriv(self);
end;
procedure TfrmDJ.PreparePage;
var
bShowKH,bShowPriceAmt: Boolean;
begin
pageCap := SeSkinPageControl1.ActivePage.Caption ;
if pageCap='订单维护' then begin
AManData := TManData.Create(SeSkinButton3,SeSkinButton4, Q_poHead,'poHead','poid',DBEdit3);
AManData2:= TManData.Create(SeSkinButton13,SeSkinButton14,Q_poBody,'DATASET','spno',wwDBLookupCombo2);
Q_poHead.Open;
Q_poBody.Open;
MasterDS := Q_poHead;
DetailDS := Q_poBody;
wwDBNavigator1.DataSource := D_poHead;
SetDataCopyParam('poHead','poid');
end else if pageCap='采购单据' then begin
AManData := TManData.Create(SeSkinButton1,SeSkinButton2, Q_boHead,'boHead','boid',DBEdit2);
AManData2:= TManData.Create(SeSkinButton12,SeSkinButton17,Q_boBody,'DATASET','ljno',wwDBLookupCombo3);
Q_boHead.Open;
Q_boBody.Open;
Q_poHead.Open;
MasterDS := Q_boHead;
DetailDS := Q_boBody;
wwDBNavigator1.DataSource := D_boHead;
SetDataCopyParam('boHead','boid');
end else if pageCap='采购总表' then begin
AManData := TManData.Create(SeSkinButton57,SeSkinButton58,Q_mrpHead,'mrpHead','poid',JvDBLookupCombo5);
AManData2:= TManData.Create(SeSkinButton63,SeSkinButton64,Q_mrp,'DATASET','spno',wwDBLookupCombo10);
Q_mrpHead.Open;
Q_mrp.Open;
Q_poHead.Open;
MasterDS := Q_mrpHead;
DetailDS := Q_mrp;
wwDBNavigator1.DataSource := D_mrpHead;
// SetDataCopyParam('mrpHead','poid');
end else if pageCap='制单维护' then begin
AManData := TManData.Create(SeSkinButton21,SeSkinButton22, Q_moHead,'moHead','moid',DBEdit10);
AManData2:= TManData.Create(SeSkinButton26,SeSkinButton27, Q_moBody,'DATASET','spno',nil);
Q_poHead.Open;
Q_moHead.Open;
Q_moBody.Open;
MasterDS := Q_moHead;
DetailDS := Q_moBody;
wwDBNavigator1.DataSource := D_moHead;
SetDataCopyParam('moHead','moid');
end else if (pageCap='成品进出仓') or (pageCap='料件进出仓') then begin
if pageCap='成品进出仓' then begin
AManData := TManData.Create(SeSkinButton35,SeSkinButton36, Q_invHead,'invHead','invid',nil);
AManData2:= TManData.Create(SeSkinButton42,SeSkinButton43, Q_invBody,'DATASET','spno',nil);
DM.QDM_CP.Open ;
Q_poHead.Open;
SeSkinPanel7.Caption := invType;
SeSkinPanel8.Caption := invType+'明细';
SeSkinButton39.Visible := (invType='成品发货');
bShowKH := GetkhTYpe(invType)<>0;
SeSkinLabel27.Visible := bShowKH;
wwDBLookupCombo6.Visible := bShowKH;
ColumnByName(JvDBGrid5,'khid').Visible := bShowKH;
if not bShowKH then begin
SeSkinLabel26.Top := SeSkinLabel27.Top;
DBEdit15.Top := wwDBLookupCombo6.Top;
end;
end;
if pageCap='料件进出仓' then begin
AManData := TManData.Create(SeSkinButton46,SeSkinButton47, Q_invHead,'invHead','invid',nil);
AManData2:= TManData.Create(SeSkinButton53,SeSkinButton54, Q_invBody,'DATASET','spno',nil);
DM.QDM_LJ.Open ;
Q_poHead.Open;
SeSkinPanel9.Caption := invType;
SeSkinPanel10.Caption := invType+'明细';
Q_invHead.FieldByName('khname').LookupDataSet := DM.QDM_sup;
Q_invBody.FieldByName('spname').LookupDataSet := DM.QDM_LJ;
Q_invBody.FieldByName('spspec').LookupDataSet := DM.QDM_LJ;
Q_invBody.FieldByName('unit').LookupDataSet := DM.QDM_LJ;
bShowKH := GetkhTYpe(invType)<>0;
SeSkinLabel38.Visible := bShowKH;
wwDBLookupCombo8.Visible := bShowKH;
ColumnByName(JvDBGrid9,'khname').Visible := bShowKH;
// JvDBGrid9.Columns[3].Visible := bShowKH;
if not bShowKH then begin
SeSkinLabel37.Top := SeSkinLabel38.Top;
DBEdit20.Top := wwDBLookupCombo8.Top;
end;
SeSkinLabel50.Visible := invType='来料待检';
DBEdit25.Visible := invType='来料待检';
ColumnByName(JvDBGrid10,'Qty2').Visible := invType='来料待检';
ColumnByName(JvDBGrid9,'ifOK').Visible := invType='来料待检';
SeSkinButton52.Visible := invType='来料待检';
end;
with Q_invHead do begin
Close;
SQL.Text := Format('select * from invHead where invType=%s order by invid desc'
,[QuotedStr(invType)]);
Open;
end;
MasterDS := Q_invHead;
DetailDS := Q_invBody;
wwDBNavigator1.DataSource := D_invHead;
SetDataCopyParam('invHead','invid');
end
end;
procedure TfrmDJ.FormDestroy(Sender: TObject);
begin
if AManData<>nil then begin
AManData.SaveData;
FreeAndNil(AManData);
end;
if AManData2<>nil then begin
AManData2.SaveData;
FreeAndNil(AManData2);
end;
end;
//function TfrmDJ.GetioTYpe(invType:string): integer;
//begin
// if (invType='入库单') or (invType='退货单')
// then Result := 1
//
// else if (invType='送货单')
// then Result := -1
//
// else Result := 0;
//
//end;
procedure TfrmDJ.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if pageCap='订单维护' then begin
// ReopenDataset(DM.Q_poHead2);
end;
end;
procedure TfrmDJ.Q_poHeadNewRecord(DataSet: TDataSet);
begin
SetNewID(DataSet,'poHead');
DataSet.FieldByName('poDate').AsDateTime := Date;
end;
procedure TfrmDJ.Q_poHeadBeforeDelete(DataSet: TDataSet);
begin
//先删除订单明细,再删除订单本身
ExecQuery('delete from poBody where poid=%s'
,[QuotedStr(DataSet.FieldByName('poid').AsString)]);
end;
procedure TfrmDJ.Q_poBodyqtyChange(Sender: TField);
begin
inherited;
with Q_poBody do
FieldByName('amt').AsFloat := FieldByName('Qty').AsFloat *
FieldByName('Price').AsFloat;
end;
procedure TfrmDJ.SeSkinButton5Click(Sender: TObject);
begin
inherited;
if AManData<>nil then
AManData.SaveData;
end;
procedure TfrmDJ.SeSkinButton6Click(Sender: TObject);
begin
inherited;
if AManData<>nil then
AManData.Cancel;
end;
procedure TfrmDJ.SeSkinButton15Click(Sender: TObject);
begin
inherited;
if AManData2<>nil then begin
if AManData.CurDadaset.State in [dsInsert,dsEdit] then
AManData.SaveData;
AManData2.SaveData;
end;
end;
procedure TfrmDJ.SeSkinButton16Click(Sender: TObject);
begin
inherited;
if AManData2<>nil then
AManData2.Cancel;
end;
procedure TfrmDJ.SeSkinButton32Click(Sender: TObject);
var
poid: string;
begin
inherited;
poid := Q_poHead.FieldByName('poid').AsString ;
if GetQuery('select 1 from mrpHead where poid=%0:s and status=''批准'''
,[QuotedStr(poid)]).Fields[0].AsString='1'
then
AbortMsg('订单['+poid+']已获批准进入采购程序,不可再次提交!');
DropTempTables;
ExecQuery(GetSQLText('updateMRP','MISC')
,[QuotedStr(poid)]);
showMsg('订单['+poid+']已列入采购总表,请通知采购部门处理!');
// uBaseData.ccode := Q_poHead.FieldByName('poid').AsString;
// frmMain.ShowBaseDataPage(3);
end;
procedure TfrmDJ.Q_boHeadBeforeDelete(DataSet: TDataSet);
begin
inherited;
//先删除采购单明细,再删除采购单本身
ExecQuery('delete from boBody where boid=%s'
,[QuotedStr(DataSet.FieldByName('boid').AsString)]);
end;
procedure TfrmDJ.Q_boHeadNewRecord(DataSet: TDataSet);
begin
inherited;
SetNewID(DataSet,'boHead');
DataSet.FieldByName('boDate').AsDateTime := Date;
end;
procedure TfrmDJ.FloatField1Change(Sender: TField);
begin
inherited;
with Q_boBody do
FieldByName('amt').AsFloat := FieldByName('Qty').AsFloat *
FieldByName('Price').AsFloat;
end;
procedure TfrmDJ.SeSkinButton20Click(Sender: TObject);
begin
inherited;
uBaseData.sRet := '';
uBaseData.ccode := '-1';
frmMain.ShowBaseDataPage(3);
if uBaseData.sRet='' then exit;
DropTempTables;
ExecQuery(GetSQLText('updateBO','MISC')
,[uBaseData.sRet
,QuotedStr(Q_boHead.FieldByName('boid').AsString)
]);
ReopenDataset(Q_boHead);
end;
procedure TfrmDJ.Q_moHeadBeforeDelete(DataSet: TDataSet);
begin
inherited;
//先删除制单明细,再删除制单本身
ExecQuery('delete from moBody where moid=%s'
,[QuotedStr(DataSet.FieldByName('moid').AsString)]);
end;
procedure TfrmDJ.Q_moHeadNewRecord(DataSet: TDataSet);
begin
inherited;
SetNewID(DataSet,'moHead');
DataSet.FieldByName('moDate').AsDateTime := Date;
DataSet.FieldByName('ifOK').AsString := '否';
end;
procedure TfrmDJ.Q_moHeadmoidChange(Sender: TField);
begin
inherited;
if varIsNULL(sender.OldValue) then exit;
ExecQuery('Update moBody set moid=''%s'' where moid=''%s'''
,[Sender.Value, sender.OldValue]);
end;
procedure TfrmDJ.JvDBLookupCombo2Change(Sender: TObject);
var
poid,moid: string;
begin
if not sure('是否根据订单内容更新制单?') then exit;
moid := Q_moHead.FieldByName('moid').AsString;
poid := Q_moHead.FieldByName('poid').AsString ;
Q_moHead.Post ;
ExecQuery(GetSQLText('UpdateMOwithPO','MISC')
,[moid]);
with Q_moHead do begin
Close;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -