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

📄 mrp_enter_newautomo2.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  If Trim(Edt_MoNo.Text)='' then 
  begin
    DispInfo('请输入订单号!',1);
    if Edt_MoNo.CanFocus then Edt_MoNo.SetFocus;
    abort;
  end;
  If AdoQry_Body.RecordCount=0 Then
  begin
    DispInfo('没有行数据,不能保存!',3);
    Abort;
  end;
  AdoQry_Body.DisableControls;
  AdoQry_Body.First;
  I:=0;
  While Not AdoQry_Body.Eof Do
  begin
    I:=I+1;
{    SqlText:=' Select * '
            +' From Item '
            +' Where (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
            +' )And (PmCode In (0,3))';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.Open;
    If AdoQry_Tmp.Eof Then
    begin
      DispInfo('第'+IntToStr(I)+'行物料代码不是制造物料,不能保存!',1);
      AdoQry_Body.EnableControls;
      Abort;
    end;//在采购合同中不存在时的处理
}
    If (AdoQry_Body.fieldbyname('MoQty').AsFloat<=0) And (Status='Add') Then
    begin
      DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定交货量必须大于0,请修改!',1);
      AdoQry_Body.EnableControls;
      Abort;
    end;
    If (AdoQry_Body.fieldbyname('MostArtworkDate').AsDateTime<Date()) Then
    begin
      DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定开工日小于了系统工作日,请修改!',1);
      AdoQry_Body.EnableControls;
      Abort;
    end;
    If (AdoQry_Body.fieldbyname('MoLineDate').AsDateTime<Date()) Then
    begin
      DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定交货日小于了系统工作日,请修改!',1);
      AdoQry_Body.EnableControls;
      Abort;
    end;
        SqlText:=' Select MrpParamValuen '
            +' From MrpParam '
            +' Where MrpParamCode=''receiveOrder''';
          AdoQry_Tmp.Close;
          AdoQry_Tmp.SQL.Text:=SqlText;
          AdoQry_Tmp.Open;
    if AdoQry_tmp.fieldbyname('MrpParamValuen').asfloat<0.1 then
    if AdoQry_Body.fieldbyname('moqty').asfloat>AdoQry_Body.fieldbyname('MoInqty').asfloat then
    begin
      DispInfo('第'+inttostr(AdoQry_Body.recno)+'行数据约定交货量大于系统建议余量,请修改!',1);
      AdoQry_Body.EnableControls;
      abort;
    end;
    AdoQry_Body.Next;
  end; //校验数据

  DbConnect.beginTrans;
  Try
     AdoQry_Body.First;
    while not AdoQry_Body.Eof do
      begin
        updatessreMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat,0);
        updatessreMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat,1);
        updatec_Ss4reMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat);
        AdoQry_Body.Next;
      end;

    AdoQry_Body.First;
    i:=0;
    While Not AdoQry_Body.Eof Do
    begin
      i:=i+1;
      if AdoQry_Body.fieldbyname('byProduct').asinteger=1 then
        begin
         AdoQry_Body.Next;
         continue;
        end;
      AdoQry_Body.Next;
    end;
//    MoNO:='M'+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),3,2))+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),6,2));
//    Edt_MoNo.Text:=GetNo(DbConnect,MoNo,'Mo');
    if  CheckAllTypeOrderNoSet(DbConnect,6) then
     Edt_MoNo.Text := GetAllTypeOrderNo(DbConnect,6);
    if edt_Mono.Text='' then abort;
    Application.ProcessMessages;
    AdoQry_Tmp.Close;
    SqlText:='Insert Mo '
            +' (MoNo,DeptCode,MoDate,referenceno,MoReMArk,SaleType,StandardFlag)'
            +'  Values('
            +''''+Trim(Edt_MoNo.Text)+''''+','
            +''''+Trim(Edt_DeptCode.Text)+''''+','
            +''''+Trim(MEdt_MoDate.Text)+''''+','
            +quotedstr(Trim(edt_rno.text))+','
            +''''+Trim(Edt_MoReMArk.Text)+''''+','
            +''''+Trim(Edt_SysParamCode.Text)+''''+','
            +''''+IntToStr(Cmbx_StandardFlag.ItemIndex)+''')';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.ExecSQL;   // Insert Mo Table
    savemohistory(dbconnect,Trim(edt_Mono.text),userCode,0);
    AdoQry_Body.First;
    While Not AdoQry_Body.Eof Do
    begin
       SqlText:='Insert MoLine '
              +' (MoNo,MoLineNo,byProduct,ParentMoLineno,Backflush,ItemCode,remArk,MoLineDate,MOStArtWorkDate,SsQty,MOQty,MoNoFinishQty,MoLineStatus)'
              +'Values('
              +''''+Trim(Edt_MoNo.Text)+''','
              +''''+IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger)+''','
              +inttostr(AdoQry_Body.fieldbyname('byProduct').asinteger)+','
              +inttostr(AdoQry_Body.fieldbyname('ParentMoLineno').asinteger)+','
              +inttostr(AdoQry_Body.fieldbyname('Backflush').asinteger)+','
              +''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
              +quotedstr(AdoQry_Body.fieldbyname('remArk').asstring)+','
              +''''+DatetimeToStr(AdoQry_Body.fieldbyname('MoLineDate').AsDateTime)+''','
              +''''+DatetimeToStr(AdoQry_Body.fieldbyname('MOStArtWorkDate').AsDateTime)+''',';
      If AdoQry_Body.fieldbyname('MoQty').AsFloat<=AdoQry_Body.fieldbyname('SsQty').AsFloat Then
         SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('MoQty').AsFloat)+''','
      Else
         SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('SsQty').AsFloat)+''',';
      SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('MOQty').AsFloat)+''','
              +''''+FloatToStr(AdoQry_Body.fieldbyname('MoNoFinishQty').AsFloat)+''','
              +'5)';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;
      saveMoLineHistory(dbconnect,Trim(edt_Mono.text),AdoQry_Body.fieldbyname('MoLineno').asinteger,userCode,0);
      operationmopo(AdoQry_tmp,
                    AdoQry_Body.fieldbyname('ItemCode').asstring,
                    'mo',
                    1,
                    Trim(edt_Mono.text),
                    AdoQry_Body.fieldbyname('MoLineno').asinteger,
                    5,
                    0,
                    AdoQry_Body.fieldbyname('moqty').asfloat,
                    AdoQry_Body.fieldbyname('MoNoFinishqty').asfloat,
                    AdoQry_Body.fieldbyname('mostArtworkdate').asstring,
                    AdoQry_Body.fieldbyname('MoLinedate').asstring,
                    getPmCode(dbconnect,AdoQry_Body.fieldbyname('ItemCode').asstring),
                    Trim(edt_DeptCode.text));
      If Cmbx_StandardFlag.ItemIndex=1 then
{        If Not (AutoBuildOrder(DbConnect,Trim(Edt_MoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
           IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger),'Add','Mo',AdoQry_Body.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
}
          If Not (NewAutoBuildOrder(DbConnect,Trim(Edt_MoNo.Text),
           IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),AdoQry_Body.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
        Abort;
      AdoQry_Body.Next;
    end;
    AdoQry_Body.First;
    While Not AdoQry_Body.Eof Do
    begin
      If AdoQry_Body.fieldbyname('MoQty').AsFloat<=AdoQry_Body.fieldbyname('SsQty').AsFloat Then
      begin
        AdoQry_Body.Edit;
        AdoQry_Body.fieldbyname('SsQty').AsFloat:=AdoQry_Body.fieldbyname('MoQty').AsFloat;
        AdoQry_Body.Post;
      end;

   {   SqlText:='Update MrpResult '
              +'Set ReMainQty=case when ReMainQty-('+FloatToStr(AdoQry_Body.fieldbyname('ssQty').AsFloat)+')'+'>=0 '
              +'                   then ReMainQty-('+FloatToStr(AdoQry_Body.fieldbyname('ssQty').AsFloat)+')'
              +'              else 0  end  '
              +'where MrpResultid='''+IntToStr(AdoQry_Body.fieldbyname('LimItOut').AsInteger)+'''';
      AdoQry_Tmp.Close;
     // showmessage(sqltext);
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;    }
      If AdoQry_Head1.Locate('SsId',AdoQry_Body.fieldbyname('LimItOut').AsInteger,[loCaseInsensitive]) Then
   {     IF (AdoQry_Body.fieldbyname('MoQty').AsFloat>=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat) Then
        begin
          AdoQry_Head1.Delete;
          AdoQry_Body.Next;
        end
        Else
        begin
     }    begin
          AdoQry_Head1.edit;
          if AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat>=0 then
          AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat
          else AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat:=0;
          AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
          AdoQry_Head1.Post;
          end;
          AdoQry_Body.Next;
    end;
    DbConnect.CommitTrans;
    Act_Save.Enabled:=False;
    if Frm_Mrp_Enter_NewMrpInfo<>nil then
       begin
        Executesql(AdoQry_tmp,'update #tMpssInfoResult set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult,MrpResult where #tMpssInfoResult.ssid=MrpResult.MrpResultid ',1);
       BookmArk:=Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.BookmArk;
       Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.ReQuery;
       Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.BookmArk:=BookmArk;
       end;
     if Frm_Mrp_Enter_NewMrpInfo1<>nil then
       begin
        Executesql(AdoQry_tmp,'update #tMpssInfoResult1 set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult1,MrpResult where #tMpssInfoResult1.ssid=MrpResult.MrpResultid ',1);
       BookmArk:=Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.BookmArk;
       Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.ReQuery;
       Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.BookmArk:=BookmArk;
       end;
     if Frm_Mrp_Enter_NewMrpInfo2<>nil then
       begin
        Executesql(AdoQry_tmp,'update #tMpssInfoResult2 set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult2,MrpResult where #tMpssInfoResult2.ssid=MrpResult.MrpResultid ',1);
       BookmArk:=Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.BookmArk;
       Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.ReQuery;
       Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.BookmArk:=BookmArk;
       end; 
   {  if Frm_Mrp_Enter_NewMrpInfo3<>nil then
       begin
        Executesql(AdoQry_tmp,'update #ssInfoResult set tMpssreMainqty=case ss.reMainqty when 0 then null else ss.reMainqty end from #ssInfoResult,ss where #ssInfoResult.ssid=ss.ssid ',1);
       BookmArk:=Frm_Mrp_Enter_NewMrpInfo3.AdoQry_Main.BookmArk;
       Frm_Mrp_Enter_NewMrpInfo3.AdoQry_Main.ReQuery;
       Frm_Mrp_Enter_NewMrpInfo3.AdoQry_Main.BookmArk:=BookmArk;
       end; } 

      AdoQry_Body.EnableControls;
    DispInfo('数据保存完毕!',3);
  Except
   on e:exception do
    begin
    If DbConnect.InTransaction Then
      DbConnect.RollBackTrans;
    recOrderror(self,AdoQry_tmp,e.message);
    Edt_MoNo.Text:='';
      AdoQry_Body.EnableControls;
    DispInfo('保存数据失败,请重试!',1);
    Abort;
    end;
  end;
  InitForm(DBConnect,'ReadOnly',AdoQry_Head);
  InitControls;
  if(Status='Add')then
  begin
    if ExtendCaption then
    begin
      Caption:=FormCaption+'新增';
      Pnl_Title.Caption:=FormCaption+'新增';
    end;
    AdoQry_Head.Append;
  end
  else if(Status='PArtEdit')or(Status='AllEdit')then
  begin
    if ExtendCaption then
    begin
      Caption:=FormCaption+'修改';
      Pnl_Title.Caption:=FormCaption+'修改';
    end;
    AdoQry_Head.Edit;
  end
  else if(Status='ReadOnly')then
  begin
    if ExtendCaption then
    begin
      Caption:=FormCaption+'查询';
      Pnl_Title.Caption:=FormCaption+'查询';
    end;
  end;
  Act_Save.Enabled:=False;
 finally
  AdoQry_Body.BookmArk:=bodymArk;
 end;
end;

procedure TFrm_Mrp_Enter_NewAutoMo2.FormActivate(Sender: TObject);
begin
  inherited;
  MEdt_MoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
  if  CheckAllTypeOrderNoSet(DbConnect,6) then
  Edt_MoNo.Enabled := False
  else begin
    Edt_MoNo.Enabled := True;
    Edt_MoNo.SetFocus;
  end;
end;

procedure TFrm_Mrp_Enter_NewAutoMo2.FormCreate(Sender: TObject);
begin
  inherited;
  ExtendCaption:=False;
  Frm_Entry_Detail:=TFrm_Mrp_Enter_AutoMo_D.Create(Self);
  SetFocus_Control:=medt_Modate;
  Cmbx_StandardFlag.clear;
  Cmbx_StandardFlag.Items.Add('否');
  Cmbx_StandardFlag.Items.Add('是');
end;

procedure TFrm_Mrp_Enter_NewAutoMo2.SetStatus(CurrentStatus: String;
  var AnswerStatus, EnableControls: String);
begin
  inherited;
  Enablecontrols:='Edt_MoNo,Edt_DeptCode,edt_rno,Medt_Modate,Edt_MoRemArk,Edt_SysParamCode,Cmbx_StandardFlag,';
end;

⌨️ 快捷键说明

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