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

📄 udj.pas

📁 delphi 源码 小型企业管理软件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    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 + -