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

📄 sfc_enter_mounitmnrequest.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit Sfc_Enter_MoUnitMnRequest;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, Db, DBCtrls, StdCtrls, ActnList, AdODB, Grids, DBGridEh,
  ExtCtrls, ComCtrls, ToolWin, ExtPrintReport, ExtEdit, Mask,dbgrids, jpeg, variants;

Type
  TFrm_Sfc_Enter_MoUnitMnRequest = Class(TFrm_Base_Entry_Body)
    Extpr: TExtPrintReport;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label12: TLabel;
    cmbbx_WhCode: TComboBox;
    cmbbx_WhPositionCode: TComboBox;
    medt_Date: TMaskEdit;
    Extedt_Billno: TExtEdit;
    Extedt_memo: TExtEdit;
    cmbbx_WhEmployee: TComboBox;
    Label7: TLabel;
    cmbbx_Shift: TComboBox;
    Panel1: TPanel;
    Label13: TLabel;
    DBText2: TDBText;
    Panel2: TPanel;
    DBText1: TDBText;
    Label8: TLabel;
    Label15: TLabel;
    Edt_Dept: TExtEdit;
    CheckBox1: TCheckBox;
    Label9: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure DBGridEhKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure AdoQry_BodyBeforePost(DataSet: TDataSet);
    procedure DBGridEhColExit(Sender: TObject);
    procedure Act_autoExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender:TObject);
    procedure FormActivate(Sender: TObject);
    procedure cmbbx_WhCodeExit(Sender: TObject);
    procedure Act_NewExecute(Sender: TObject);
    procedure DBGridEhExit(Sender: TObject);
    procedure Extedt_BillnoChange(Sender: TObject);
    procedure medt_DateChange(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmbbx_WhCodeChange(Sender: TObject);
    procedure cmbbx_WhPositionCodeChange(Sender: TObject);
    procedure Act_SaveExecute(Sender: TObject);
    procedure DateCheck(Sender: TObject);
    procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure cmbbx_WhEmployeeExit(Sender: TObject);
    procedure AdoQry_BodyAfterInsert(DataSet: TDataSet);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure cmbbx_WhEmployeeChange(Sender: TObject);
    procedure cmbbx_ShiftChange(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure AdoQry_BodyBeforeEdit(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    IsAfterPrint : Boolean;
    procedure checkcoCurrentqty;
    procedure InitCmbbx_WhPositionCode(whCode:string);
    procedure InitCmbbx_WhEmployee(whCode:string);
    procedure showdbgrid;
    procedure initprint;
    { Private declarations }
  public
    tmp_Status:string;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String); Override;//设置各种状态下那些控件Enable
    procedure InitControls; Override;//初始化Form上所有控件
    procedure SaveData; Override;
      { Public declarations }
  end;

var
  Frm_Sfc_Enter_MoUnitMnRequest: TFrm_Sfc_Enter_MoUnitMnRequest;

implementation

uses Sys_Global, Sfc_Enter_MoUnitMnRequestH,Inv_Global, Sfc_MnOut_NotSave_P;
{$R *.DFM}

procedure TFrm_Sfc_Enter_MoUnitMnRequest.InitCmbbx_WhPositionCode(whCode:string);
begin
  //初始化货位,根据当前传入的仓库号码,选出不是待检货位及不是拉式货位的货位
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select WhPositionCode,WhPositionName '+
              ' from WhPosition  '+
              ' where whCode='''+whCode+''''+
              ' and WhPositionType<>1 '+
              ' and BackFlushWhP=0 '+
              ' Order by WhPositionCode ');
    open;
    cmbbx_WhPositionCode.clear;
    if not Eof then
    begin
      First;
      while not Eof do
      begin
        cmbbx_WhPositionCode.Items.Add(fieldbyname('WhPositionCode').asstring+' '+fieldbyname('WhPositionName').asstring);
        Next;
      end;
    end;
  end;
  cmbbx_WhPositionCode.Itemindex:=0;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequest.InitCmbbx_WhEmployee(whCode:string);
begin
  //初始化仓管员,从物料主文件中选出当前仓库的缺省仓管员,可以为空
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select distinct i.wh_EmployeeCode,e.EmployeeName '+
            '  from Item i,Employee e '+
            '  where whCode='''+whCode+''''+
            '    and i.wh_EmployeeCode is not null '+
            '    and i.wh_EmployeeCode=e.EmployeeCode '+
            ' Order by i.wh_EmployeeCode');
    open;
    cmbbx_WhEmployee.clear;
    cmbbx_WhEmployee.Items.Add('');
    if not Eof then
    begin
      First;
      while not Eof do
      begin
        cmbbx_WhEmployee.Items.Add(fieldbyname('wh_EmployeeCode').asstring+' '+fieldbyname('EmployeeName').asstring);
        Next;
      end;
      cmbbx_WhEmployee.Itemindex := 0;
    end;
  end;
end;

procedure  TFrm_Sfc_Enter_MoUnitMnRequest.Showdbgrid;
var
  sqltext,tmp_WhEmployee,tmp_DeptCode,tmpfields,oncheckpositionCode:string;
begin
   //取待检货位的代码
   with AdoQry_tmp do
   begin
     Close;
     sql.text:='select WhPositionCode from WhPosition where WhPositionType=1 '+
               'and whCode='+QuotedStr(getCode(cmbbx_WhCode.text));
     open;
     oncheckpositionCode:=fieldbyname('WhPositionCode').asstring;
   end;
  //取数据显示于DBGRID

  //根据仓库代码,货位代码决定选出数据表中的英文字段名,用于下面的SQL语名组合
  tmpfields:=getInvfield(AdoQry_tmp,getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text),'CurrentInv');
  //如果仓库管理员为空或不为空情况下的SQL语名中仓管员条件组合
  if cmbbx_WhEmployee.text<>'' then
    tmp_WhEmployee:='   and i.wh_EmployeeCode='''+getCode(cmbbx_WhEmployee.text)+''''
  else
    tmp_WhEmployee:='';
  Try
    ExecuteSql(AdoQry_Tmp,'Drop Table #MnItemList',1);
  except
  end;

  SqlText :='Create table #MnItemList '
            +'( IsTotal Int null, '
            +'  ItemListId Int Null, '
            +'  MoNo    varchAr(20) null, '
            +'  MoLineNo  Int Null, '
            +'  ItemCode  varchAr(16) NUll, '
            +'  Ite_ItemCode varchAr(16) null, '
            +'  ItemName   varchAr(200) Null, '
            +'  UomName    varchAr(10) null, '
            +'  OnHandInv  decimal(20,8) null, '
            +'  MoCtrlQty  decimal(20,8) null, '
            +'  MoRealQty  decimal(20,8) null, '
            +'  MoRequestQty decimal(20,8) null, '
            +'  ThisRequestQty decimal(20,8) null, '
            +'  BatchNo     varchAr(30)  null, '
            +'  BomRemArk      varchAr(200) null , ' 
            +'  BillLineRemArk      varchAr(200) null ) ' 
            +'  Insert Into #MnItemList  '
            +'  select  0 as IsTotal,MnItemList.ItemListId,MnItemList.MoNo,  '
            +'         MnItemList.MoLineNo, '
            +'         MnItemList.ItemCode, '
            +'         MnItemList.Ite_ItemCode, '
            +'         Item.ItemName,       '
            +'         Uom.UomName,         '
            +'         IsNull(CurrentInv.'+TmpFields+',0.0) as OnHandInv,'    
            +'         MnItemList.MoCtrlQty, '
            +'         MnItemList.MoRealQty,   '
            +'         MnItemList.MoRequestQty,   '
            +'         0.0 as ThisRequestQty,         '
            +'         ''                           ''  as BatchNo,  '
            +'         '''' as BomRemArk, '
            +'         convert(varchAr(1000),'''') as BillLineRemArk    '
         //   +'  Into #MnItemList    '
            +'  from  MnItemList                               '
            +'   Join Item on MnItemList.ItemCode=Item.ItemCode '
            +IifString(Cmbbx_WhEmployee.Text='' ,'','and Item.Wh_EmployeeCode='+QuotedStr(GetCode(Cmbbx_WhEmployee.Text)))
            +'   Join CurrentInv on Item.ItemCode=CurrentInv.ItemCode '
            +'                       and  CurrentInv.WhCode='+QuotedStr(GetCode(Cmbbx_WhCode.Text))
            +'                       and  CurrentInv.WhPositionCode='+QuotedStr(GetCode(Cmbbx_WhPositionCode.Text))
            +'   left Join Uom On Item.UomCode=Uom.UomCode   '
            +'  where AlterNative=0  '
            +'    and MoNo+Convert(varchAr(20),MoLineNo) In ( Select MoNo+Convert(varchAr(20),MoLineNo) '
                                                            +' from #TmPMoLine Where CheckFlag=1 and DeptCode='+QuotedStr(GetCode(Edt_Dept.Text))+')   ' 
            +' union '
            +'  select  0 as IsTotal,MnItemList.ItemListId,MnItemList.MoNo,  '
            +'         MnItemList.MoLineNo, '
            +'         MnItemList.ItemCode, '
            +'         MnItemList.Ite_ItemCode, '
            +'         Item.ItemName,       '
            +'         Uom.UomName,         '
            +'         0.0 as OnHandInv,'    
            +'         MnItemList.MoCtrlQty, '
            +'         MnItemList.MoRealQty,   '
            +'         MnItemList.MoRequestQty,   '
            +'         0.0 as ThisRequestQty,         '
            +'         ''                           ''  as BatchNo,  '
            +'         '''' as BomRemArk, '
            +'         convert(varchAr(1000),'''') as BillLIneRemArk    '
         //   +'  Into #MnItemList    '
            +'  from  MnItemList                               '
            +'   Join Item on MnItemList.ItemCode=Item.ItemCode and Item.WhCode='+QuotedStr(GetCode(Cmbbx_WhCode.Text))
            +IifString(Cmbbx_WhEmployee.Text='' ,'','and Item.Wh_EmployeeCode='+QuotedStr(GetCode(Cmbbx_WhEmployee.Text)))
            +'   left Join Uom On Item.UomCode=Uom.UomCode   '
            +'  where AlterNative=0  '
            +'    and Not Exists(select * from CurrentInv '
            +'                    where MnItemList.ItemCode=CurrentInv.ItemCode '
            +'                      and CurrentInv.WhCode='+QuotedStr(GetCode(Cmbbx_WhCode.Text)) 
            +'                      and CurrentInv.WhPositionCode='+QuotedStr(GetCode(Cmbbx_WhPositionCode.Text))
            +'                   )  '
            +'    and MoNo+Convert(varchAr(20),MoLineNo) In ( Select MoNo+Convert(varchAr(20),MoLineNo) '
                                                            +' from #TmPMoLine Where CheckFlag=1 and DeptCode='+QuotedStr(GetCode(Edt_Dept.Text))+')   ' ;
                                                            
  ExecuteSql(AdoQry_tmp,SqlText,1);
  SqlText := ' Insert #MnItemList '
            +' select  1 as IsTotal,0 as ItemListId,'''' as MoNo,'
                    +' 0 as MoLineNo, '
                    +' ItemCode, '
                    +' '' '' as Ite_ItemCode, '
                    +' ItemName, '
                    +' UomName , '
                    +' OnHandInv, '
                    +' Sum(MoCtrlQty) as MoCtrlQty, '
                    +' sum(MoRealQty) as MoRealQty, '
                    +' Sum(MoRequestQty) as MoRequestQty,'
                    +' Sum(ThisRequestQty) as ThisRequestQty, '
                    +'         ''''  as BatchNo,  '
                    +' '''' as BomRemArk, '
                    +'         convert(varchAr(1000),'''') as BillLineRemArk    '
            +' From #MnItemList   '
            +' Group By ItemCode,ItemName,UomName,OnHandInv ';
  ExecuteSql(AdoQry_Tmp,SqlText,1);

  Executesql(AdoQry_Body,'select * from #MnItemList where IsTotal=1',0);

end;

procedure TFrm_Sfc_Enter_MoUnitMnRequest.InitControls;
var SqlText : String;
begin//初始化Form上的控件
  inherited;
  //说明:用tmp_Status变量控制这个窗体, =notChange 为窗体刚进入
  //是 =Change cmbbx_WhPositionCode 改变的状态,要根据货位的改变而刷新GRID
  with dbgrideh do
  begin
    options:=options+[dgEditing]-[dgRowselect];
  end;
  pnl_Hint.Visible :=False;
  //控制保存后界面不变SHOWFLAG是基类的参数
  if (showflag=True) and (status<>'Add') then
     exit;
  Edt_Dept.Text := Frm_Sfc_Enter_MoUnitMnRequestH.tmp_DeptCode;
  Edt_Dept.Enabled := False;
  medt_Date.text:=DateToStr(Date);
   //DBGRID只允许请领数量,批次号,备注可以更改
  if status='ReadOnly' then
  begin
    cmbbx_WhCode.Enabled:=True;
    cmbbx_WhPositionCode.Enabled:=True ;
    cmbbx_WhEmployee.Enabled :=True;
    medt_Date.Enabled:=True;
    dbgrideh.ReadOnly :=True;
    Button1.Enabled := True;
    Button2.Enabled := True;
    dbgrideh.Columns[7].ReadOnly:=True;
    dbgrideh.Columns[8].ReadOnly:=True;
    dbgrideh.Columns[9].ReadOnly:=True;
    Act_auto.Enabled :=False;
    act_New.Enabled:=False;
  end
  else
  begin
    Act_auto.Enabled :=True;
    dbgrideh.ReadOnly :=False;
    dbgrideh.Columns[0].ReadOnly:=True;
    dbgrideh.columns[1].ReadOnly:=True;
    dbgrideh.Columns[2].ReadOnly:=True;
    dbgrideh.Columns[3].ReadOnly:=True;
    dbgrideh.Columns[4].ReadOnly:=True;
    dbgrideh.Columns[5].ReadOnly:=True;
    dbgrideh.Columns[6].ReadOnly:=True;
    dbgrideh.columns[7].ReadOnly:=False;
    dbgrideh.Columns[8].ReadOnly:=False;
    dbgrideh.Columns[9].ReadOnly:=False;
//    dbgrideh.Columns[10].ReadOnly:=False;

  end;
//  initUsablewhcmbx(AdoQry_tmp,userCode,cmbbx_WhCode,True);
  SQlText := ' select WhAccessCtrl.WHCode,WHName   '
             +'    from WHAccessCtrl   '
             +'   join Warehouse on WhAccessCtrl.WhCode=Warehouse.WhCode '
             +'   where WhAccessCtrl.EmployeeCode='+QuotedSTr(userCode)
             +'     and ( WhAccessCtrl.WhCode In (select WhCode  from CurrentInv      '
             +'                     where ItemCode in(select distinct ItemCode from MnItemList '
             +'                                        where  MoNo+Convert(varchAr(20),MoLineNo) In ( Select distinct  MoNo+Convert(varchAr(20),MoLineNo) '
                                                            +' from #TmPMoLine Where CheckFlag=1)   ' 
             +'                                        ) )     '
             +'          or WhAccessCtrl.WhCode in (select WhCode from Item where ItemCode in( select distinct ItemCode from MnItemList '
             +'                                        where  MoNo+Convert(varchAr(20),MoLineNo) In ( Select distinct  MoNo+Convert(varchAr(20),MoLineNo) '
                                                            +' from #TmPMoLine Where CheckFlag=1 ))  '
             +'         ))  '
            + '   Order by WhAccessCtrl.WHCode   ';

⌨️ 快捷键说明

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