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

📄 bas_item_d_new.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit Bas_Item_D_New;
//物料主文件分属性维护明细单元
Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Detail, StdCtrls, Db, AdODB, ExtCtrls, ExtEdit, linkedit, Buttons;

Type
  TFrm_Bas_Item_D_New = Class(TFrm_Base_Detail)
    Edt_Designno: TEdit;
    Edt_maxqty: TEdit;
    Edt_Purchldtime: TEdit;
    Edt_ItemName: TEdit;
    Edt_Mnldtime: TEdit;
    Edt_minqty: TEdit;
    Edt_ItemClass2: TEdit;
    Edt_ItemClass1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    lbl_ParamName1: TLabel;
    lbl_ParamName2: TLabel;
    lbl_ParamName3: TLabel;
    lbl_ParamName4: TLabel;
    lbl_ParamName5: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    lbl_CaiGou: TLabel;
    lbl_JiHua: TLabel;
    cmbbx_onlydefaultwh: TComboBox;
    cmbbx_limitout: TComboBox;
    Edt_ItemClass4: TEdit;
    Edt_ItemClass3: TEdit;
    Edt_PmBatch: TEdit;
    Edt_ItemClass5: TEdit;
    lbl_Warehouse: TLabel;
    cmbbx_PmCode: TComboBox;
    Extedt_WhCode: TExtEdit;
    ExtEdt_Pla_EmployeeCode: TExtEdit;
    ExtEdt_EmployeeCode: TExtEdit;
    cmbbx_ItemType: TComboBox;
    Extedt_UomCode: TExtEdit;
    lbl_UomName: TLabel;
    Extedt_BarCode: TExtEdit;
    Extedt_ItemCode2: TExtEdit;
    Label15: TLabel;
    Label19: TLabel;
    cmbbx_CanSale: TComboBox;
    Label20: TLabel;
    Label21: TLabel;
    Bevel1: TBevel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    edt_Capacityhours: TEdit;
    cmbbx_BatchCtrl: TComboBox;
    cmbbx_Batchstrat: TComboBox;
    lbl_DeptName: TLabel;
    edt_DeptCode: TExtEdit;
    Label14: TLabel;
    Extedt_Wh_EmployeeCode: TExtEdit;
    lbl_Wh_EmployeeName: TLabel;
    cmbbx_LongPurchLT: TComboBox;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    edt_PrepareLT: TEdit;
    edt_RunLT: TEdit;
    edt_QcLT: TEdit;
    edt_remArk: TEdit;
    Label30: TLabel;
    Bevel2: TBevel;
    Label31: TLabel;
    Label10: TLabel;
    Label6: TLabel;
    Bevel3: TBevel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    edt_CurrentOnHandInv: TEdit;
    edt_CurrentOnCheckInv: TEdit;
    edt_CurrentFreezeInv: TEdit;
    edt_CurrentOnShipInv: TEdit;
    edt_CurrentWasterInv: TEdit;
    Label39: TLabel;
    edt_OpInv: TEdit;
    Label40: TLabel;
    edt_ClassCode: TEdit;
    lbl_ClassName: TLabel;
    Label41: TLabel;
    edt_ProductClass: TEdit;
    Label42: TLabel;
    edt_QcClass: TEdit;
    AdoQry_Item: TAdoQuery;
    SpeedButton1: TSpeedButton;
    Edt_ItemCode: TEdit;
    Label43: TLabel;
    edt_mat: TEdit;
    Label44: TLabel;
    cmbbx_iScheck: TComboBox;
    Label45: TLabel;
    Label46: TLabel;
    Extedt_AssetKmCode: TExtEdit;
    Label47: TLabel;
    Label48: TLabel;
    LEdt_InSpecTEmployeeCode: TLinkEdit;
    Lbl_InspecTEmployeeName: TLabel;
    Label49: TLabel;
    Cmbbx_ScrApType: TComboBox;
    Label50: TLabel;
    Cmbbx_ISStockItem: TComboBox;
    procedure Edt_ItemCodeExit(Sender: TObject);
    procedure Edt_ItemNameExit(Sender: TObject);
    procedure Edt_MnldtimeExit(Sender: TObject);
    procedure Edt_PurchldtimeExit(Sender: TObject);
    procedure Edt_maxqtyExit(Sender: TObject);
    procedure Edt_minqtyExit(Sender: TObject);
    procedure Vw_BuyerCodeCheck(Sender: TObject);
    procedure cmbbx_onlydefaultwhEnter(Sender: TObject);
    procedure Edt_PmBatchExit(Sender: TObject);
    procedure edt_CapacityhoursExit(Sender: TObject);
    procedure edt_PrepareLTExit(Sender: TObject);
    procedure edt_RunLTExit(Sender: TObject);
    procedure edt_QcLTExit(Sender: TObject);
    procedure WarehouseCodeCheck(Sender: TObject);
    procedure WhEmployeeCodeCheck(sender:tobject);
    procedure edt_ClassCodeExit(Sender: TObject);
    procedure edt_ClassCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure edt_remArkExit(Sender: TObject);
    procedure Edt_ItemCodeButtonClick(Sender: TObject);
    procedure cmbbx_PmCodeChange(Sender: TObject);
    procedure UomCodeCheck(Sender: TObject);
    procedure btn_CancelClick(Sender: TObject);
    procedure Extedt_AssetKmCodeExit(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure LEdt_InSpecTEmployeeCodeExit(Sender: TObject);
  private
    { Private declarations }
    Character:string;
    procedure InitControls; Override;
    procedure SaveData; Override;
    procedure initSysParamName;
  public
    procedure SetStatus(CurrentStatus:String;var EnableControls:String);Override;
    function  existsBomItem(ItemCode:string;ItemType:integer):boolean;
    procedure updateBomItemType(ItemCode:string;ItemType:integer);
    { Public declarations }
  end;

var
  Frm_Bas_Item_D_New: TFrm_Bas_Item_D_New;

implementation

uses Sys_Global, Sys_QuickPick, Bas_Item_New;
{$R *.DFM}

function  TFrm_Bas_Item_D_New.existsBomItem(ItemCode:string;ItemType:integer):boolean;
var sqltext:string;
    AdoQry:TAdoQuery;
    tMpsql:string;
begin     
  Result:=False;
  AdoQry:=TAdoQuery.Create(nil);
  AdoQry.Connection:=dbconnect;
  case ItemType of
    0: tMpsql:=' and (BomItemType<>0 and BomItemType<>4)';
    1: tMpsql:=' and  BomItemType<>1 ';
    4: tMpsql:=' and  BomItemType<>3 ';
    7: tMpsql:=' and  BomItemType<>6 ';
    6: tMpsql:=' and  BomItemType<>5 ';
  end;
  sqltext:='select * from Bom '
          +' where ItemCode='+quotedstr(ItemCode)
          +tMpsql;
  try          
    Executesql(AdoQry,sqltext,0);
    if AdoQry.RecordCount>0 then
      Result:=True;
  finally
    AdoQry.Free;
  end;
end;

procedure TFrm_Bas_Item_D_New.updateBomItemType(ItemCode:string;ItemType:integer);
var sqltext:string;
    AdoQry:TAdoQuery;
    tMpsql,Info:string;
begin     
  AdoQry:=TAdoQuery.Create(nil);
  AdoQry.Connection:=dbconnect;
  case ItemType of
    0: 
       begin
         tMpsql:=' and (BomItemType<>0 and BomItemType<>4)';
         Info:='此物料在Bom中有子项属性为非“普通物料”的记录,'
                 +#13+'是否保存当前修改?如果保存,系统将修改Bom中的相关记录的子项属性';
       end;
    1: 
       begin
         tMpsql:=' and  BomItemType<>1 ';
         Info:='此物料在Bom中有子项属性为非“工作中心”的记录,'
                 +#13+'是否保存当前修改?如果保存,系统将修改Bom中的相关记录的子项属性';
       end;
    4: begin
         tMpsql:=' and  BomItemType<>3 ';
         Info:='此物料在Bom中有子项属性为非“结构虚项”的记录,'
                 +#13+'是否保存当前修改?如果保存,系统将修改Bom中的相关记录的子项属性';
       end;
    7: begin
         tMpsql:=' and  BomItemType<>6 ';
         Info:='此物料在Bom中有子项属性为非“替代虚项”的记录,'
                 +#13+'是否保存当前修改?如果保存,系统将修改Bom中的相关记录的子项属性';
       end;
    6: begin
         tMpsql:=' and  BomItemType<>5 ';
         Info:='此物料在Bom中有子项属性为非“成本中心”的记录,'
                 +#13+'是否保存当前修改?如果保存,系统将修改Bom中的相关记录的子项属性';
       end;
  end;
  sqltext:='update Bom  ' 
          +' set BomItemType='+iifstring(ItemType=0,'0',iifstring(ItemType=1,'1',iifstring(ItemType=4,'3',iifstring(ItemType=7,'6','5'))))
          +' where ItemCode='+quotedstr(ItemCode)
          +tMpsql;
  try     
    if DispInfo(Info,2)<>'y' then 
      abort;
     Executesql(AdoQry,sqltext,1);
  finally
    AdoQry.Free;
  end;
end;


procedure TFrm_Bas_Item_D_New.InitControls;
begin
  AdoQry_Item.Connection :=AdoQry_Maintain.Connection ;
  AdoQry_tmp.Connection :=AdoQry_Maintain.Connection ;

  //根据Qry_Maintain的ItemCode进行Qry_Item的数据
  with AdoQry_Item do
  begin
    Close;
    sql.Text :=' Select * From Vw_Base_Item '
              +' where ItemCode='''+AdoQry_Maintain.fieldbyname('ItemCode').asstring+'''';
     open;
  end;
  Character:=Param1;
  inherited;
  if Character='General' then
    Caption:='物料主文件基本属性维护'
  else if Character='Plan' then
    Caption:='物料主文件计划属性维护'
  else if Character='Warehouse' then
    Caption:='物料主文件库存管理属性维护'
  else if Character='Usable' then
    Caption:='物料主文件物料生效'
  else
    Caption:='物料主文件查询';
  with AdoQry_Item do
  begin
    //常规属性
    Edt_ItemCode.text:=fieldbyname('ItemCode').asstring;
    Edt_ItemName.text:=fieldbyname('ItemName').asstring;
    ExtEdt_UomCode.text:=fieldbyname('UomCode').asstring;
    lbl_UomName.Caption:=fieldbyname('UomName').asstring;
    Edt_Designno.text:=fieldbyname('designno').asstring;
    Extedt_BarCode.text:=fieldbyname('BarCode').asstring;
    Extedt_ItemCode2.text:=fieldbyname('ItemCode2').asstring;
    edt_mat.Text:=fieldbyname('Material').asstring;
    LEdt_InspecTEmployeeCode.Text:=fieldbyname('InspecTEmployeeCode').asstring;
    Lbl_InspecTEmployeeName.Caption:=fieldbyname('InspecTEmployeeName').asstring;
    edt_remArk.text:=fieldbyname('remArk').asstring;
    Cmbbx_ScrApType.ItemIndex:=fieldbyname('ScrApType').asinteger-1;
    Extedt_AssetKmCode.text:=fieldbyname('AssetKmCode').asstring;
    Label47.Caption:=fieldbyname('KmName').asstring;
    initSysParamName;
    //计划属性
    edt_ClassCode.Text :=fieldbyname('ClassCode').asstring;
    edt_ProductClass.Text :=fieldbyname('ProductClass').asstring;
    edt_QcClass.Text :=fieldbyname('QcClass').asstring;
    edt_ProductClass.MaxLength :=fieldbyname('ProductClass').Size;
    edt_QcClass.MaxLength :=fieldbyname('QcClass').size;
    cmbbx_ItemType.ItemIndex:=fieldbyname('ItemType').asinteger;
    ExtEdt_EmployeeCode.text:=fieldbyname('EmployeeCode').asstring;
    ExtEdt_Pla_EmployeeCode.text:=fieldbyname('Pla_EmployeeCode').asstring;
    lbl_CaiGou.Caption:=fieldbyname('CaiGou').asstring;
    lbl_JiHua.Caption:=fieldbyname('JiHua').asstring;
    cmbbx_PmCode.Itemindex:=fieldbyname('PmCode').asinteger;
    if cmbbx_PmCode.ItemIndex=0 then
      begin
      edt_DeptCode.OnKeyDown:=DeptHint;
      edt_DeptCode.OnExit:=getDeptName;
      end
    else 
      begin
      edt_DeptCode.OnKeyDown:=VendorHint;
      edt_DeptCode.OnExit:=getVendorName;
      end;
    Edt_Purchldtime.text:=inttostr(fieldbyname('purchldtime').asinteger);
    edt_PrepareLT.text:=inttostr(fieldbyname('PrepareLT').asinteger);
    edt_RunLT.text:=inttostr(fieldbyname('RunLT').asinteger);
    edt_QcLT.text:=inttostr(fieldbyname('QcLT').asinteger);
    Edt_maxqty.text:=floattostr(fieldbyname('maxqty').asfloat);
    Edt_Mnldtime.text:=inttostr(fieldbyname('mnldtime').asinteger);
    Edt_PmBatch.text:=fieldbyname('PmBatch').asstring;
    Edt_DeptCode.text:=fieldbyname('DeptCode').asstring;
    Edt_Capacityhours.Text :=fieldbyname('Capacityhours').asstring;
    if fieldbyname('BatchCtrl').asinteger=1 then
      cmbbx_BatchCtrl.Itemindex:=fieldbyname('BatchCtrl').asinteger
    else
      cmbbx_BatchCtrl.Itemindex:=0;
    if fieldbyname('LongPurchLT').asinteger=1 then
       cmbbx_LongPurchLT.ItemIndex:=fieldbyname('LongPurchLT').asinteger
    else
       cmbbx_LongPurchLT.ItemIndex:=0;
    cmbbx_iScheck.ItemIndex:=fieldbyname('iScheck').asinteger;
    if fieldbyname('Batchstrat').asinteger=1 then
      cmbbx_Batchstrat.Itemindex:=fieldbyname('Batchstrat').asinteger
    else
      cmbbx_Batchstrat.Itemindex:=0;
    //库存管理属性
    ExtEdt_WhCode.text:=fieldbyname('whCode').asstring;
    Edt_minqty.text:=floattostr(fieldbyname('minqty').asfloat);
    lbl_DeptName.Caption:=fieldbyname('DeptName').asstring;
    Extedt_Wh_EmployeeCode.Text:=fieldbyname('wh_EmployeeCode').asstring;
    lbl_Wh_EmployeeName.Caption:=fieldbyname('wh_EmployeeName').asstring;
    edt_CurrentOnHandInv.text:=floattostr(fieldbyname('CurrentOnHandInv').asfloat);
    edt_CurrentOnCheckInv.text:=floattostr(fieldbyname('CurrentOnCheckInv').asfloat);
    edt_CurrentFreezeInv.text:=floattostr(fieldbyname('CurrentFreezeInv').asfloat);
    edt_CurrentOnShipInv.text:=floattostr(fieldbyname('CurrentOnShipInv').asfloat);
    edt_CurrentWasterInv.text:=floattostr(fieldbyname('CurrentWasterInv').asfloat);
    edt_OpInv.Text :=floattostr(fieldbyname('opInv').asfloat);
    if fieldbyname('onlydefaultwh').asinteger=1 then
       cmbbx_onlydefaultwh.Itemindex:=fieldbyname('onlydefaultwh').asinteger
    else
       cmbbx_onlydefaultwh.Itemindex:=0;
    if fieldbyname('canSale').asinteger=1 then
       cmbbx_CanSale.ItemIndex:=1
    else
       cmbbx_CanSale.ItemIndex:=0;
    if fieldbyname('limitout').asinteger=1 then
      cmbbx_limitout.Itemindex:=fieldbyname('limitout').asinteger
    else
      cmbbx_limitout.Itemindex:=0;
    lbl_Warehouse.Caption:=fieldbyname('whName').asstring;
    if Add then
      Cmbbx_ISStockItem.ItemIndex:=1
    else
      Cmbbx_ISStockItem.ItemIndex:=fieldbyname('ISStockItem').asinteger;
  end;
  if not(Add) then
    begin
      edt_ItemCode.OnExit:=nil;
      if status<>'Add' then
      begin
         edt_ItemCode.Enabled :=False;
      end;
      edt_ItemCode.OnExit:=Edt_ItemCodeExit ;
    end
  else
    begin
    edt_ItemCode.Enabled :=True;
    speedbutton1.Enabled:=True;
    end;
end;

procedure TFrm_Bas_Item_D_New.SaveData;
var
 sql_Itemdisabletime,str_Itemdisabletime,str_ModifyItemdisabletime:string;
 Add_Wh_EmployeeCode,Add_Str_Wh_EmployeeCode,modify_Str_Wh_EmployeeCode,Add_EmployeeCode,Add_Str_EmployeeCode,modify_EmployeeCode,modify_Str_EmployeeCode:string;
 Add_Pla_EmployeeCode,Add_Str_Pla_EmployeeCode,modify_Pla_EmployeeCode,modify_Str_Pla_EmployeeCode:string;
 Itemmodifytime,Add_WhCode,Add_Str_WhCode,modify_Str_WhCode,Add_DeptCode,Add_Str_DeptCode,modify_Str_DeptCode:string;
 canmodify_Itemmodifytime,canmodify_remArk:boolean;
 sAssetKmCode,sAssetKmCode1:string;
begin
  Inherited;
  //控制有效日期
  if not (Add) then
  begin
    canmodify_Itemmodifytime:=False;
    if AdoQry_Item.fieldbyname('ItemCode').asstring<>edt_ItemCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('ItemName').asstring<>edt_ItemName.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('UomCode').asstring<>Extedt_UomCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('designno').asstring<>Edt_Designno.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('LongPurchLT').asinteger<>cmbbx_LongPurchLT.Itemindex then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('wh_EmployeeCode').asstring<>Extedt_Wh_EmployeeCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('ItemType').asinteger<>cmbbx_ItemType.Itemindex then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('EmployeeCode').asstring<>ExtEdt_EmployeeCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('EmployeeCode').asstring<>ExtEdt_EmployeeCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('Pla_EmployeeCode').asstring<>ExtEdt_Pla_EmployeeCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('whCode').asstring<>Extedt_WhCode.text then
    begin
      canmodify_Itemmodifytime:=True;
    end;
    if AdoQry_Item.fieldbyname('onlydefaultwh').asinteger<>cmbbx_onlydefaultwh.Itemindex then
    begin
      canmodify_Itemmodifytime:=True;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -