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

📄 mrp_enter_newautomo1.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
            +' 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;
//    showmessage(floattostr(AdoQry_Body.fieldbyname('moqty').asfloat));
//    showmessage(floattostr(AdoQry_Body.fieldbyname('ssqty').asfloat));
    AdoQry_Body.Next;
  end; //校验数据

//-------------------------------------------
  AdoQry_Body.First;
  While Not AdoQry_Body.Eof Do
  begin
    TemPmoQty:=AdoQry_Body.fieldbyname('moQty').AsFloat;
    SqlText := ' Select * from #MoLine1 '
              +' where ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''' '
              +' Order by MoLinedate' ;
    Executesql(AdoQry_tmp,sqltext,0);
    While not AdoQry_Tmp.Eof do
    begin
      if TemPmoQty>=AdoQry_Tmp.fieldbyname('moqty').AsFloat then
      begin
        TemPmoQty:=TemPmoQty-AdoQry_Tmp.fieldbyname('moqty').AsFloat;
      end
      else
      begin
        if  TemPmoQty > 0 then
        begin
          AdoQry_Tmp.Edit;
          AdoQry_Tmp.fieldbyname('moqty').AsFloat:= TemPmoQty;
          AdoQry_Tmp.fieldbyname('MoNoFinishQty').AsFloat:= TemPmoQty;
          TemPmoQty:=TemPmoQty-AdoQry_Tmp.fieldbyname('moqty').AsFloat;
          AdoQry_Tmp.Post;
         end
         else
         begin
          AdoQry_Tmp.Edit ;
          AdoQry_Tmp.fieldbyname('moqty').AsFloat:= 0;
          AdoQry_Tmp.fieldbyname('MoNoFinishQty').AsFloat:= 0;
          AdoQry_Tmp.Post;
         end;
      end;
      AdoQry_Tmp.next;
    end;
    AdoQry_Body.next;
  end;

//-------------------------------------------  
  DbConnect.beginTrans;
  Try
    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 //自动产生领料单
        begin
          AdoQry_Body.EnableControls;
          Abort;
        end;
      AdoQry_Body.Next;
    end;
//***********************************************************
    AdoQry_Temp.Connection := dbconnect;
    SqlText:='Select * from #MoLine1';
    Executesql(AdoQry_Temp,sqltext,0);
    AdoQry_Temp.First;
    While Not AdoQry_Temp.Eof Do
    begin
      If AdoQry_Temp.fieldbyname('moQty').AsFloat<=AdoQry_Temp.fieldbyname('SsQty').AsFloat Then
      begin
        AdoQry_Temp.Edit;
        AdoQry_Temp.fieldbyname('SsQty').AsFloat:=AdoQry_Temp.fieldbyname('moQty').AsFloat;
        AdoQry_Temp.Post;
      end;
      SqlText:='Update MrpResult '
              +'Set ReMainQty=ReMainQty-'''+(FloatToStr(AdoQry_Temp.fieldbyname('SsQty').AsFloat))+''''
              +'where MrpResultid='''+IntToStr(AdoQry_Temp.fieldbyname('LimItOut').AsInteger)+'''';
      Executesql(AdoQry_tmp,sqltext,1);
      If AdoQry_Head1.Locate('SsId',AdoQry_Temp.fieldbyname('LimItOut').AsInteger,[loCaseInsensitive]) Then
         begin
          BookmArk:=AdoQry_Head1.BookmArk;
          AdoQry_Head1.edit;
          if AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Temp.fieldbyname('ssQty').AsFloat>=0 then
          AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Temp.fieldbyname('ssQty').AsFloat
          else AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=0;
          AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
          AdoQry_Head1.Post;
          end;
       AdoQry_Temp.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('ReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat>=0 then
          AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat
          else AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=0;
          AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
          AdoQry_Head1.Post;
          end;
          AdoQry_Body.Next;
    end;}
    DbConnect.CommitTrans;
    Act_Save.Enabled:=False;
     if flag=0 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 flag=1 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 flag=2 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 flag=3 then
       begin
        Executesql(AdoQry_tmp,'update #tmpdynssInfoResult set tMpssreMainqty=case ss.reMainqty when 0 then null else ss.reMainqty end from #tmpdynssInfoResult,ss where #tmpdynssInfoResult.ssid=ss.ssid ',1);
       BookmArk:=Frm_Mrp_Qry_DynamicMrpInfo.AdoQry_Main.BookmArk;
       Frm_Mrp_Qry_DynamicMrpInfo.AdoQry_Main.ReQuery;
       Frm_Mrp_Qry_DynamicMrpInfo.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_NewAutoMo1.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_NewAutoMo1.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('0 否');
  Cmbx_StandardFlag.Items.Add('1 是');
end;

⌨️ 快捷键说明

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