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

📄 mrp_enter_newmrpinfo.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
       end;
 if noandlineno=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz') then exit;
  If Frm_Mrp_Enter_CloseMo1=Nil Then
  begin
    Frm_Mrp_Enter_CloseMo1:=TFrm_Mrp_Enter_CloseMo1.Create(Self);
    Frm_Mrp_Enter_CloseMo1.SetSysParam(userCode,ModuleCode,menuid,DatetimeToStr(Now));
    Frm_Mrp_Enter_CloseMo1.Ordernoandlineno:=noandlineno;
    Frm_Mrp_Enter_CloseMo1.nowmono:=mono;
    Frm_Mrp_Enter_CloseMo1.nowMoLineno:=MoLineno;
    Frm_Mrp_Enter_CloseMo1.InitForm(dbconnect,False);
  end
  Else
    Frm_Mrp_Enter_CloseMo1.Show;
finally
 AdoQry_Main.BookmArk:=BookmArk;
  activecontrol:=dbgrideh;
end;
end;

procedure TFrm_Mrp_Enter_NewMrpInfo.DataSourceDataChange(Sender: TObject;
  Field: TField);
var i:integer;
begin
  inherited;
  try
   i:=strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1))
  except
  if ShowAnimate<>nil then ShowAnimate.Free;
  if ShowPanel<>nil then ShowPanel.Free;
  abort;
  end;
 case strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1)) of
      1: label3.Caption:='';
      2: label3.Caption:='应取消原因:父项需求发生改变,当前数量的订单没有父项需求';
      3: label3.Caption:='应关闭原因:订单生产完毕';
      4: begin
           if ((AdoQry_Main.fieldbyname('duedate').asdatetime<date()) or (AdoQry_Main.fieldbyname('ssdate').asdatetime<date())) then
             label3.Caption:='应重排原因:订单的约定开工日或约定交货日小于Mrp展开运算的日期'
           else
            if AdoQry_Main.fieldbyname('canuseonhand').asfloat=0 then
           label3.Caption:='应重排原因:订单的约定交货日大于物料毛需求的需求日期 '
         end;
      5: label3.Caption:='应减少原因:物料的供应量大于需求量';
      6: label3.Caption:='应提前到'+AdoQry_Main.fieldbyname('realreleasedate').asstring;
 end;

end;

procedure TFrm_Mrp_Enter_NewMrpInfo.Button3Click(Sender: TObject);
begin
  inherited;
  if AdoQry_Main.RecordCount=0 then
    begin
      activecontrol:=dbgrideh;
      exit;
    end;
  try
    Frm_Bas_Qry_MultiBomSViewMaster:=TFrm_Bas_Qry_MultiBomSViewMaster.Create(self);
    Frm_Bas_Qry_MultiBomSViewMaster.InitForm(AdoQry_Tmp.Connection);
    Frm_Bas_Qry_MultiBomSViewMaster.ExpandBom(AdoQry_Main.fieldbyname('ItemCode').asstring);
  finally
    activecontrol:=dbgrideh;
  end;
end;

procedure TFrm_Mrp_Enter_NewMrpInfo.DBGridEhGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
var i:integer;
begin
  inherited;
if AdoQry_Main.RecordCount=0 then exit;
  try
   i:=strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1))
  except
    if ShowAnimate<>nil then ShowAnimate.Free;
  if ShowPanel<>nil then ShowPanel.Free;

  abort;
  end;

 case strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1)) of
      2: begin
           afont.Color:=clred;
         end;
      4: begin
           afont.Color:=clred;
         end;
 end;

end;

procedure TFrm_Mrp_Enter_NewMrpInfo.Button4Click(Sender: TObject);
var noandlineno:string;
    BookmArk:string;
    mono:string;
    MoLineno:integer;
    tmpQry,tmpQry1:TAdoQuery;
    sqltext:string;
    tmPmoqty:string;
begin
  inherited;
{try
  BookmArk:=AdoQry_Main.BookmArk;
  mono:=AdoQry_Main.fieldbyname('Orderno').asstring;
  MoLineno:=AdoQry_Main.fieldbyname('Orderlineno').asinteger;
  noandlineno:=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz');
    AdoQry_Main.First;
     while not AdoQry_Main.Eof do
       begin
         if AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger=4 then
           noandlineno:=noandlineno+','+quotedstr(AdoQry_Main.fieldbyname('Orderno').asstring+inttostr(AdoQry_Main.fieldbyname('Orderlineno').asinteger));
           AdoQry_Main.Next;
       end;
 if noandlineno=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz') then exit;
  If Frm_Mrp_Enter_NewEditPassMo1=Nil Then
  begin
    Frm_Mrp_Enter_NewEditPassMo1:=TFrm_Mrp_Enter_NewEditPassMo1.Create(Self);
    Frm_Mrp_Enter_NewEditPassMo1.SetSysParam(userCode,ModuleCode,menuid,DatetimeToStr(Now));
    Frm_Mrp_Enter_NewEditPassMo1.Ordernoandlineno:=noandlineno;
    Frm_Mrp_Enter_NewEditPassMo1.nowmono:=mono;
    Frm_Mrp_Enter_NewEditPassMo1.nowMoLineno:=MoLineno;
    Frm_Mrp_Enter_NewEditPassMo1.InitForm(dbconnect,False);
  end
  Else
    Frm_Mrp_Enter_NewEditPassMo1.Show;
finally
 AdoQry_Main.BookmArk:=BookmArk;
  activecontrol:=dbgrideh;
end; }
  try
    if (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>4) 
      and (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>5) 
      and (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>6) 
      then exit;
    BookmArk:=AdoQry_Main.BookmArk;
    mono:=AdoQry_Main.fieldbyname('Orderno').asstring;
    MoLineno:=AdoQry_Main.fieldbyname('Orderlineno').asinteger;
    noandlineno:=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz');
    tmpQry:=TAdoQuery.Create(self);
    tmpQry.Connection:=dbconnect;
    tmpQry1:=TAdoQuery.Create(self);
    tmpQry1.Connection:=dbconnect;

    sqltext:='Select MoLine.*,Mo.*,Dept.DeptName,Item.ItemName,Uom.UomName,'
                  +' Item.ItemCode+'''+' '+'''+Item.ItemName As ItemFlag,'
                  +' Item.Pla_EmployeeCode+'' ''+Employee.EmployeeName  as plaflag,'
                  +' Item.Pla_EmployeeCode, '
                  +' Dept.DeptCode+'''+' '+'''+Dept.DeptName As DeptFlag '
                  +' From MoLine '
                  +' Join Mo On MoLine.MoNo=Mo.MoNo '
                  +' Join Item On MoLine.ItemCode=Item.ItemCode '
                  +' left join Employee on Item.Pla_EmployeeCode=Employee.EmployeeCode '
                  +' left Join Dept On Mo.DeptCode=Dept.DeptCode '
                  +' left Join Uom On Item.UomCode=Uom.UomCode ' 
              +' where  MoLine.MoNo='+quotedstr(mono)
              +'  and   MoLine.MoLineno='+inttostr(MoLineno);
   Executesql(tmpQry,sqltext,0)  ;
  if tmpQry.RecordCount=0 then exit;
  sqltext:='select sum(isnull(MoRealqty,0)) as MoRealqty from mnItemList'    
          +' where mono='+quotedstr(mono)
          +'  and  MoLineno='+inttostr(MoLineno);
  Executesql(tmpQry1,sqltext,0);

  {if getstatus(AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger)<>5 then
   begin
   DispInfo('该生产订单行不是准备状态,不可修改!',5);
   abort;
   end; }

  Frm_Mrp_Enter_PassMo_D := TFrm_Mrp_Enter_PassMo_D.Create(self);
  try
      with Frm_Mrp_Enter_PassMo_D do
        begin
          AdoQry_tmp.Connection:=dbconnect;
          edtmono.Text:=tmpQry.fieldbyname('mono').asstring;
          edtMoLineno.Text:=tmpQry.fieldbyname('MoLineno').asstring;
          Extedt_ItemCode.Text:=tmpQry.fieldbyname('ItemCode').asstring;
          lbl_ItemName.Caption:=tmpQry.fieldbyname('ItemName').asstring;
          Extedt_ItemName.Text:=tmpQry.fieldbyname('ItemName').asstring;
          medt_Modate.Text:=tmpQry.fieldbyname('MoLinedate').asstring;
          medt_MostArtworkdate.Text:=tmpQry.fieldbyname('mostArtworkdate').asstring;
          edt_qty.Text:=tmpQry.fieldbyname('moqty').asstring;
          tmPmoqty:=edt_qty.Text;
          edtMoNoFinishqty.Text:=tmpQry.fieldbyname('MoNoFinishqty').asstring;
          btn_ok.Enabled:=False;
          if getstatus(tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger)=5 then
          edt_qty.Enabled:=True;
          if (getstatus(mono,MoLineno)=6 )
           and (tmpQry1.fieldbyname('MoRealqty').asfloat<=0) 
           and (tmpQry.fieldbyname('MoRealinqty').asfloat<=0)
           and (tmpQry.fieldbyname('MoInqty').asfloat<=0)then
          edt_qty.Enabled:=True;
          showmodal;
         // medt_Modate.SetFocus;
          if modalResult=mrok then
            begin
             try
            dbconnect.beginTrans;
             saveMoLineHistory(dbconnect,tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger,userCode,1);

             updateMoLine(tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger,medt_Modate.Text,medt_MostArtworkdate.Text,strtofloat(edt_qty.text),strtofloat(edt_qty.text),edt_qty.Text<>tmPmoqty);
           if ((tmpQry.fieldbyname('byProduct').asinteger<>1) and (tmpQry.fieldbyname('MoLinestatus').asinteger=5)) then
            begin
            Executesql(AdoQry_tmp,'delete from mnItemList where mono='+quotedstr(tmpQry.fieldbyname('mono').asstring)+' and MoLineno='+inttostr(tmpQry.fieldbyname('MoLineno').asinteger),1);
            If Not (AutoBuildOrder(DbConnect,tmpQry.fieldbyname('mono').asstring,Trim(tmpQry.fieldbyname('ItemCode').AsString),
               IntToStr(tmpQry.fieldbyname('MoLineNo').AsInteger),'Add','Mo',tmpQry.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
               Abort;
            end;

             operationmopo(AdoQry_tmp,
                      tmpQry.fieldbyname('ItemCode').asstring,
                      'mo',
                      4,
                      tmpQry.fieldbyname('mono').asstring,
                    //  Trim(edt_Mono.text),
                      tmpQry.fieldbyname('MoLineno').asinteger,
                      tmpQry.fieldbyname('MoLinestatus').asinteger,
                      0,
                      strtofloat(edt_qty.text),
                      strtofloat(edt_qty.text),
                      medt_Modate.Text,
                      medt_MostArtworkdate.Text,
                      getPmCode(dbconnect,tmpQry.fieldbyname('ItemCode').asstring),
                      tmpQry.fieldbyname('DeptCode').asstring);
             dbconnect.CommitTrans;
             except
              dbconnect.RollBackTrans;
             end;
            end;
        end;
  finally
    Frm_Mrp_Enter_PassMo_D.Free;
  end;
 
  finally
   tmpQry.Free;
   tmpQry1.Free;
   AdoQry_Main.BookmArk:=BookmArk;
    activecontrol:=dbgrideh;
  end;
end;

function TFrm_Mrp_Enter_NewMrpInfo.getstatus(mono: string;
  MoLineno: integer): integer;
begin
Result:=999;
Executesql(AdoQry_tmp,'select MoLinestatus from MoLine where mono='+quotedstr(mono)+' and MoLineno='+inttostr(MoLineno),0);
Result:=AdoQry_tmp.fieldbyname('MoLinestatus').asinteger;
end;



procedure TFrm_Mrp_Enter_NewMrpInfo.Act_CopyExecute(Sender: TObject);
var
  I:Boolean;
  BookmArk:String;
begin
  inherited;
  If AdoQry_Main.RecordCount=0   Then
  begin
    Abort;
  end;
  BookmArk:=AdoQry_Main.BookmArk;
 // I:=False;
  AdoQry_Main.First;
  While Not AdoQry_Main.Eof do
  begin
    If AdoQry_Main.fieldbyname('sScheck').AsInteger>0 Then
    begin
     I:=True;
     Break;
    end;
    AdoQry_Main.Next;
  end;
try
//  If I=True Then
  begin
    Frm_Mrp_Enter_NewAutoMo1:=TFrm_Mrp_Enter_NewAutoMo1.Create(Application);
    Frm_Mrp_Enter_NewAutoMo1.SetSysParam(UserCode,ModuleCode,MenuId,DateTimeToStr(Now));
    Frm_Mrp_Enter_NewAutoMo1.edt_DeptCode.Text:=AdoQry_Main.fieldbyname('DeptCode').asstring;
    Frm_Mrp_Enter_NewAutoMo1.edt_DeptName.Text:=AdoQry_Main.fieldbyname('DeptName').asstring;
    reMainqty:=AdoQry_Main.fieldbyname('reMainqty').asfloat;
    Frm_Mrp_Enter_NewAutoMo1.flag:=0;
    Frm_Mrp_Enter_NewAutoMo1.GetConnect(AdoQry_Main);
    Frm_Mrp_Enter_NewAutoMo1.ShowModal;
  end;
finally
    AdoQry_Main.BookmArk:=BookmArk;
end;
end;

procedure TFrm_Mrp_Enter_NewMrpInfo.Act_SumExecute(Sender: TObject);
var
  I:Boolean;
  BookMArk:String;
begin
  inherited;
  If AdoQry_Main.RecordCount=0  Then
  begin
    Abort;
  end;
  I:=False;
  BookMArk:=AdoQry_Main.BookmArk ;
  AdoQry_Main.First;
  While Not AdoQry_Main.Eof do
  begin
    If AdoQry_Main.fieldbyname('ssSysInfoflag').Asinteger=1 Then
    begin
     I:=True;
     BookMArk:=AdoQry_Main.BookmArk ;
     Break;
    end;
    AdoQry_Main.Next;
  end;
  If I=True Then
  begin
    Frm_Mrp_Enter_NewMrpInfo3:=TFrm_Mrp_Enter_NewMrpInfo3.Create(Application);

    Frm_Mrp_Enter_NewMrpInfo3_C:=TFrm_Mrp_Enter_NewMrpInfo3_C.Create(Application);
    Frm_Mrp_Enter_NewMrpInfo3_C.InitForm(DbConnect,'Add',AdoQry_Main);
//    Frm_Mrp_Enter_NewMrpInfo3_C.SetFormParam(PcNo,IntToStr(PmCode),'','','','');
    Frm_Mrp_Enter_NewMrpInfo3_C.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
    Frm_Mrp_Enter_NewMrpInfo3_C.ShowModal;
    Frm_Mrp_Enter_NewMrpInfo3_C.Free;


    Frm_Mrp_Enter_NewMrpInfo3.InitForm(Dbconnect,False);
//    Frm_Mrp_Enter_NewMrpInfo3.SetFormParam(PcNo,IntToStr(PmCode),'','','','');
    Frm_Mrp_Enter_NewMrpInfo3.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
    Frm_Mrp_Enter_NewMrpInfo3.Show;


  end
  Else
  begin
    AdoQry_Main.BookmArk:=BookMArk;
    DispInfo('没有建议下达的记录,不能执行汇总操作!',3);
    Abort;
  end;

  AdoQry_Main.BookmArk:=BookMArk;


end;


procedure TFrm_Mrp_Enter_NewMrpInfo.AdoQry_MainAfterPost(
  DataSet: TDataSet);
begin
  inherited;
  Executesql(AdoQry_tmp,'update #tMpssInfoResult set sScheck='+inttostr(AdoQry_Main.fieldbyname('sScheck').asinteger)+' where ssid='+inttostr(AdoQry_Main.fieldbyname('ssid').asinteger),1);

end;

procedure TFrm_Mrp_Enter_NewMrpInfo.Button5Click(Sender: TObject);
begin
  inherited;
  If AdoQry_Main.RecordCount=0 then exit;
  Frm_Bas_BomQry:=TFrm_Bas_BomQry.Create(self);
  Frm_Bas_BomQry.SetSysParam(userCode,ModuleCode,menuid,datetimetostr(now));
  Frm_Bas_BomQry.Ite_ItemCode := AdoQry_Main.fieldbyname('ItemCode').AsString;
  Frm_Bas_BomQry.Lbl_ItemCode.Caption:=AdoQry_Main.fieldbyname('ItemCode').AsString;
  Frm_Bas_BomQry.InitForm(dbconnect,True);
  Frm_Bas_BomQry.Show;

end;

procedure TFrm_Mrp_Enter_NewMrpInfo.FormKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = vk_Space then 
  begin
    AdoQry_Main.Edit;
    AdoQry_Main.fieldbyname('sScheck').AsInteger:=iifinteger(AdoQry_Main.fieldbyname('sScheck').AsInteger=0,1,0);
    AdoQry_Main.Post;
  end;  
end;

end.

⌨️ 快捷键说明

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