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

📄 ubasedata.pas

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