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

📄 mrp_enter_newpassmo.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 5 页
字号:
            Abort;
          end;
          if not existssonItem(AdoQry_Head.fieldbyname('ItemCode').asstring) then
          begin
            if  DispInfo('选定的第'+IntToStr(i)+'条生产订单行物料 '+quotedstr(AdoQry_Head.fieldbyname('Itemflag').asstring)+ ' 无子项,是否批准?',2)<>'y' then
             begin
              If DbConnect.InTransaction Then
                DbConnect.RollBackTrans;
              AdoQry_Head.Next;
              continue;
             end;
          end;
          dbconnect.beginTrans;
          
          if isBackflush=1 then
           begin
            if not   checkCurrentonhandInv(tmPmono,tmPMoLineno,ishaveInv,strwhName) then
              begin
               if ishaveInv=0 then
                 begin
                    If DbConnect.InTransaction Then
                        DbConnect.RollBackTrans;
                    DispInfo(AdoQry_Head.fieldbyname('ItemCode').asstring+'物料下的子项'+tmpCode+'在含'+getDeptName(getDeptCode(tmPmono))+'受单部门的拉式领料货位的仓库不够库存,不能批准下达!',1);
                    exit;                                                      
                 end;
              end;
//           createpanel(3,dbgrideh);
           if not  createstallmoveBill(TmPmono,tmPMoLineno,getBatchCtrl(AdoQry_Head.fieldbyname('ItemCode').asstring))then
               begin
                    If DbConnect.InTransaction Then
                        DbConnect.RollBackTrans;
                    DispInfo('建立货位移动单出错!',1);
                    exit;
               end;
           end;

          saveMoLineHistory(dbconnect,AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger,userCode,3);
          //保存本单历史操作信息
          PassMoLine(tmPmono,tmPMoLineno);
          //批准本单
        If ((AdoQry_Head.fieldbyname('Standardflag').asinteger=1) and (AdoQry_Head.fieldbyname('byProduct').asinteger<>1)) Then
         begin
           If IsBomChange(AdoQry_Head.fieldbyname('ItemCode').AsString,AdoQry_Head.fieldbyname('MoDate').AsString) then
           begin
             deletemnList(AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger);
{             If Not (AutoBuildOrder(DbConnect,AdoQry_Head.fieldbyname('mono').asstring,Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),
             IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger),'Add','Mo',AdoQry_Head.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
}
          If Not (NewAutoBuildOrder(DbConnect,AdoQry_Head.fieldbyname('MoNo').AsString,
           IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger),Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),AdoQry_Head.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
              Abort;       //自动产生生产领料单
           end;            
         end;

          operationmopo(AdoQry_tmp,
                    AdoQry_Head.fieldbyname('ItemCode').asstring,
                    'mo',
                    2,
                    AdoQry_Head.fieldbyname('mono').asstring,
                  //  Trim(edt_Mono.text),
                    AdoQry_Head.fieldbyname('MoLineno').asinteger,
                    6,
                    0,
                    AdoQry_Head.fieldbyname('moqty').asfloat,
                    AdoQry_Head.fieldbyname('MoNoFinishqty').asfloat,
                    AdoQry_Head.fieldbyname('mostArtworkdate').asstring,
                    AdoQry_Head.fieldbyname('MoLinedate').asstring,
                    getPmCode(dbconnect,AdoQry_Head.fieldbyname('ItemCode').asstring),
                    AdoQry_Head.fieldbyname('DeptCode').asstring);

          savebyProducthistory(tmPmono,tmPMoLineno);
          //保存本单之副产品历史操作信息
          PassbyProductMoLine(tmPmono,tmPMoLineno);
          //批准本单之副产品
          AdoQry_Head.Edit;
          AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=6;
          AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
          AdoQry_Head.Post;
          DbConnect.CommitTrans;
        end;
          AdoQry_Head.Next;
       end;
    Except
      If DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
         DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
         AdoQry_Head.BookMArk:=BookmArk;
         Abort;
    end;
  end;
 // AdoQry_Head.ReQuery;
  AdoQry_Head.BookMArk:=BookmArk;
  Flag:=Not Flag;
end;

procedure TFrm_Mrp_Enter_NewPassMo.Act_CancelCheckExecute(Sender: TObject);
var
  SqlText,BookMArk:String;
  I:Integer;
    tmPmono:string;
  tmPMoLineno:integer;
  tmpbeforeedit:Tdatasetnotifyevent;

begin
  inherited;
   If AdoQry_Head.RecordCount=0 Then
    Abort;
  BookMArk:=AdoQry_Head.BookmArk;
  If DispInfo('确认取消批准选定生产订单吗?',2)='y' Then
  begin
    I:=1;
    Try
      AdoQry_Head.First;
      While Not AdoQry_Head.Eof Do
      begin
        DbConnect.beginTrans;
       { If AdoQry_Head.fieldbyname('MoNoFinishQTY').AsFloat<AdoQry_Head.fieldbyname('MOQTY').AsFloat Then
        begin
          AdoQry_Head.Next;
          I:=I+1;
          Continue;
        end;   }
        If (AdoQry_Head.fieldbyname('MoLineCheck').AsInteger=1) And (AdoQry_Head.fieldbyname('MoLineStatus').AsInteger=6) Then
        begin
          tmPmono:=AdoQry_Head.fieldbyname('mono').asstring;
          tmPMoLineno:=AdoQry_Head.fieldbyname('MoLineno').asinteger;
          SqlText:=' Select * From MoLine '
                  +' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
                  +' And MoLineNo='''+IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger)+''''
                  +' And MoLineStatus=6 ';
          AdoQry_Tmp.Close;
          AdoQry_Tmp.SQL.Text:=SqlText;
          AdoQry_Tmp.Open;
          If AdoQry_Tmp.Eof Then
          begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
            DispInfo('选定的第'+IntToStr(I)+'条生产订单行状态已被其它用户修改,请刷新!',3);
            Abort;
          end;
          if AdoQry_Head.fieldbyname('Backflush').asinteger=1 then
            begin
            If DbConnect.InTransaction Then
              DbConnect.rollBackTrans;
              AdoQry_Head.Next;
              continue;
            end;
          if beenProducted(tmPmono,tmPMoLineno) then
            begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
            DispInfo('选定的第'+IntToStr(I)+'条生产订单行未结量不等于下单量,不可取消批准!',3);
            exit;
            end;
          if beendilivered(tmPmono,tmPMoLineno) then
            begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
            DispInfo('选定的第'+IntToStr(I)+'条生产订单行已生产领料,不可取消批准!',3);
            exit;
            end;

          if beenbuildBill(tmPmono,tmPMoLineno) then
            begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
            if  DispInfo('选定的第'+IntToStr(I)+'条生产订单行已领料制单,是否取消批准?',2)='n' then
              exit;
            if not dbconnect.InTransaction then
              dbconnect.beginTrans;
              sqltext:='delete from InvOutBillline '
                       +' where exists(select * from InvOutBill  '
                       +'               where InvOutBillline.InvBillid=InvOutBill.InvBillid '
                       +'                 and InvOutBill.mono='+quotedstr(tmPmono)
                       +'                 and InvOutBill.MoLineno='+inttostr(tmPMoLineno)
                       +'                 and InvOutBill.InvBillwhchck=0  '
                       +'                 and InvOutBill.BillTypeCode=''0201'')';
              Executesql(AdoQry_tmp,sqltext,1);
              sqltext:='delete from InvOutBill '
                       +' where  InvOutBill.mono='+quotedstr(tmPmono)
                       +'  and InvOutBill.MoLineno='+inttostr(tmPMoLineno)
                       +'  and InvOutBill.InvBillwhchck=0 '
                       +'  and InvOutBill.BillTypeCode=''0201'' ';
              Executesql(AdoQry_tmp,sqltext,1);
            end;


          saveMoLineHistory(dbconnect,AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger,userCode,4);
          SqlText:=' Update MoLine '
                  +' set MoLineStatus=5,'
                  +'     PassEmployeeCode=null '
                  +' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
                  +' And  MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
                  +' And MoLineStatus=6 ';
          AdoQry_tmp.Close;
          AdoQry_tmp.SQL.Text:=SqlText;
          AdoQry_tmp.ExecSQL;
          SqlText:=' select * from MoLine '
                  +' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
                  +' And  ParentMoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
                  +' And MoLineStatus=6 '
                  +' and byProduct=1 ';
          AdoQry_tmp.Close;
          AdoQry_tmp.SQL.Text:=SqlText;
          AdoQry_tmp.open;
          AdoQry_tmp.First;
          while not AdoQry_tmp.Eof do
            begin
            saveMoLineHistory(dbconnect,AdoQry_tmp.fieldbyname('mono').asstring,AdoQry_tmp.fieldbyname('MoLineno').asinteger,userCode,4);
            AdoQry_tmp.Next;
            end;

          SqlText:=' Update MoLine '
                  +' set MoLineStatus=5,'
                  +'     PassEmployeeCode=null '
                  +' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
                  +' And  ParentMoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
                  +' And MoLineStatus=6 '
                  +' and byProduct=1 ';
          AdoQry_tmp.Close;
          AdoQry_tmp.SQL.Text:=SqlText;
          AdoQry_tmp.ExecSQL;
       operationmopo(AdoQry_tmp,
                    AdoQry_Head.fieldbyname('ItemCode').asstring,
                    'mo',
                    2,
                    AdoQry_Head.fieldbyname('mono').asstring,
                  //  Trim(edt_Mono.text),
                    AdoQry_Head.fieldbyname('MoLineno').asinteger,
                    5,
                    0,
                    AdoQry_Head.fieldbyname('moqty').asfloat,
                    AdoQry_Head.fieldbyname('MoNoFinishqty').asfloat,
                    AdoQry_Head.fieldbyname('mostArtworkdate').asstring,
                    AdoQry_Head.fieldbyname('MoLinedate').asstring,
                    getPmCode(dbconnect,AdoQry_Head.fieldbyname('ItemCode').asstring),
                    AdoQry_Head.fieldbyname('DeptCode').asstring);

          AdoQry_Head.Edit;
          AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=5;
          AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
          AdoQry_Head.Post;
          I:=I+1;
        end
        Else
        begin
                  if AdoQry_Head.fieldbyname('byProduct').asinteger=1 then
             begin
               if (AdoQry_Head.fieldbyname('mono').asstring=tmPmono) and (AdoQry_Head.fieldbyname('ParentMoLineno').asinteger=tmPMoLineno) then
                 begin
                  //saveMoLineHistory(dbconnect,AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger,userCode,4);
                  SqlText:=' Update MoLine '
                          +' set MoLineStatus=5,'
                          +'     PassEmployeeCode=null '
                          +' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
                          +' And  MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
                          +' And MoLineStatus=6 '
                          +' and byProduct=1 ';
                     AdoQry_tmp.Close;
                     AdoQry_tmp.SQL.Text:=SqlText;
                     AdoQry_tmp.ExecSQL;
                     Tmpbeforeedit:=AdoQry_Head.BeforeEdit;
                     AdoQry_Head.BeforeEdit:=nil;
                     AdoQry_Head.Edit;
                     AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=5;
                     AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
                     AdoQry_Head.Post;
                     AdoQry_Head.BeforeEdit:=Tmpbeforeedit;
                 end;
             end;
          I:=I+1;
        end;

⌨️ 快捷键说明

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