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

📄 mrp_enter_newautomo2.pas

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

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

Type
  TFrm_Mrp_Enter_NewAutoMo2 = Class(TFrm_Base_Entry_Body)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edt_MoNo: TEdit;
    Medt_Modate: TMaskEdit;
    Label4: TLabel;
    Edt_MoRemArk: TEdit;
    DBGridEh1: TDBGridEh;
    AdoQry_BodyMONO: TStringField;
    AdoQry_BodyMoLineNO: TIntegerField;
    AdoQry_BodyItemCode: TStringField;
    AdoQry_BodyMOQTY: TFloatField;
    AdoQry_BodyMoLineDATE: TDateTimeField;
    AdoQry_BodyMoNoFinishQTY: TFloatField;
    AdoQry_BodyMoLineSTATUS: TIntegerField;
    AdoQry_BodyMOStArtWorkDate: TDateTimeField;
    AdoQry_BodyItemName: TStringField;
    AdoQry_BodyUomName: TStringField;
    AdoQry_Head1: TAdoQuery;
    Label5: TLabel;
    Edt_SysParamValuec: TEdit;
    Lbl_SaleType: TLabel;
    Lbl_DeptName: TLabel;
    AdoQry_Temp: TAdoQuery;
    Label7: TLabel;
    Lbl_ItemFlag: TLabel;
    Label9: TLabel;
    DBText1: TDBText;
    Label10: TLabel;
    DBText2: TDBText;
    Edt_DeptName: TEdit;
    Label11: TLabel;
    Cmbx_StandardFlag: TComboBox;
    AdoQry_BodySsQty: TFloatField;
    AdoQry_BodyLimItOut: TIntegerField;
    AdoQry_BodyByProduct: TIntegerField;
    AdoQry_BodyParentMoLineNo: TIntegerField;
    AdoQry_BodyBackFlush: TIntegerField;
    AdoQry_BodyMoInQty: TFloatField;
    AdoQry_Bodyessid: TIntegerField;
    Edt_DeptCode: TLinkEdit;
    Edt_SysParamCode: TLinkEdit;
    Label6: TLabel;
    edt_rno: TEdit;
    AdoQry_BodyRemArk: TStringField;
    procedure Act_SaveExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DateCheck(Sender: TObject);
    procedure Act_DeleteLineExecute(Sender: TObject);
    procedure Edt_SysParamCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edt_SysParamCodeExit(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender: TObject);
    procedure Act_QuitExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edt_DeptCodeExit(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure Act_ExcelExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure Edt_SysParamCodeButtonClick(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
  private
    { Private declarations }
  public
    flag:integer;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String); Override;
    procedure InitControls; Override;
    procedure GetConnect(Ado_Qry:TAdoQuery);
    procedure getbyProduct(ItemCode:string;qty:real;MoLinedate,mostArtdate:string);
    procedure deletebyProduct(MoLineno:integer);
    function updatessreMainqty(ItemCode:string;sid,eid:integer;poqty:real;istmp:integer):boolean;
    function updatec_Ss4reMainqty(ItemCode:string;sid,eid:integer;poqty:real):boolean;
{ Public declarations }
  end;

var
  Frm_Mrp_Enter_NewAutoMo2: TFrm_Mrp_Enter_NewAutoMo2;
  reMainqty:real;
implementation

uses  Sys_Global,Mrp_Enter_MrpInfo,Mrp_Enter_MrpInfo1,Mrp_Enter_MrpInfo2, Mrp_Enter_AutoMo_D, Mrp_Enter_Mo_P,
  Mrp_Qry_DynamicMrpInfo, Mrp_Enter_NewMrpInfo, Mrp_Enter_NewMrpInfo1,
  Mrp_Enter_NewMrpInfo3,Mrp_Global, Mrp_Enter_NewMrpInfo2;

{$R *.DFM}

function checksymbol(Source:string;disptext:string):boolean;   //检查输入中是否有单引号
var
  i:integer;
  s:string;
begin
  s:=Trim(Source);
  for i:=1 to length(s) do
    if s[i]='''' then
    begin
      DispInfo(disptext+'中不能使用单引号!',1);
      Result:=False;
      exit;
    end;
  Result:=True;
end;

function TFrm_Mrp_Enter_NewAutoMo2.updatessreMainqty(ItemCode:string;sid,eid:integer;poqty:real;istmp:integer):boolean;
var AdoQry:TAdoQuery;
    sqltext:string;
    tmpreMainqty:real;
begin
  AdoQry:=TAdoQuery.Create(nil);
  AdoQry.Connection:=dbconnect;
  tmpreMainqty:=0;
  if istmp=0 then
    sqltext:='select * from  MrpResult '//+iifstring(istmp=0,'MrpResult','#ss')
            +'  where MrpResultid between '+inttostr(sid) +' and '+inttostr(eid)
            +'    and ItemCode='+quotedstr(ItemCode)
            +'    and ordinal=3 Order by releaseDate '
  else
    sqltext:='select * from  #tMpssInfoResult'+iifstring(Frm_Mrp_Enter_NewMrpInfo<>nil,'',iifstring(Frm_Mrp_Enter_NewMrpInfo1<>nil,'1','2'))
            +'  where  ssid between '+inttostr(sid) +' and '+inttostr(eid)
            +'    and  ItemCode='+quotedstr(ItemCode)
            +'    and ssSysInfoFlag=1 Order by ssDate ' ;
try
  Executesql(AdoQry,sqltext,0);
  while (not (AdoQry.Eof)) and (poqty<>0) do
    begin
      tmpreMainqty:=AdoQry.fieldbyname('reMainqty').asfloat;
      if tmpreMainqty<poqty then
       begin
        poqty:=poqty-tmpreMainqty;
        tmpreMainqty:=0;
       end
      else
       begin
        tmpreMainqty:=tmpreMainqty-poqty;
        poqty:=0;
       end;
       if istmp=0 then
       begin
         sqltext:='update MrpResult'
                 +' set reMainqty='+floattostr(tmpreMainqty)
                 +' where MrpResultid='+inttostr(AdoQry.fieldbyname('MrpResultid').asinteger);
       end
       else
                sqltext:='update #tMpssInfoResult'+iifstring(Frm_Mrp_Enter_NewMrpInfo<>nil,'',iifstring(Frm_Mrp_Enter_NewMrpInfo1<>nil,'1','2'))
               +' set reMainqty='+floattostr(tmpreMainqty)
               +' , ssreMainqty='+floattostr(tmpreMainqty)
               +' where ssid='+inttostr(AdoQry.fieldbyname('ssid').asinteger);

       Executesql(AdoQry_tmp,sqltext,1);
      AdoQry.Next;
    end;
finally
 AdoQry.Free;
end;
end;

function TFrm_Mrp_Enter_NewAutoMo2.updatec_Ss4reMainqty(ItemCode:string;sid,eid:integer;poqty:real):boolean;
var AdoQry:TAdoQuery;
    sqltext:string;
begin
  AdoQry:=TAdoQuery.Create(nil);
  AdoQry.Connection:=dbconnect;
try
  sqltext:='update #ssInfoResult'
          +' set ssreMainqty= case when ssreMainqty>='+floattostr(poqty)
          +'                        then ssreMainqty-('+floattostr(poqty)+')'
          +'                       else 0 '
          +'                  end  '
          +' , tMpssreMainqty= case when reMainqty>='+floattostr(poqty)
          +'                        then reMainqty-('+floattostr(poqty)+')'
          +'                       else 0 '
          +'                  end  '

          +'  where ssid ='+inttostr(sid)
          +'    and endssid='+inttostr(eid)
          +'    and ItemCode='+quotedstr(ItemCode);
       Executesql(AdoQry,sqltext,1);
finally
 AdoQry.Free;
end;
end;



procedure TFrm_Mrp_Enter_NewAutoMo2.GetConnect(Ado_Qry:TAdoQuery);
var
  SqlText:String;
  I,j:Integer;
begin
  AdoQry_Tmp.Connection:=Ado_Qry.Connection;
  AdoQry_Body.Connection:=Ado_Qry.Connection;
  DbConnect:=Ado_Qry.Connection;
  AdoQry_Head1.Connection:=DbConnect;
  AdoQry_Head1:=Ado_Qry;
  SqlText:=' Select Top 0 MoLine.*,Item.LimItOut,Item.Qclt as essid,Item.ItemName,Uom.UomName '
          +' From MoLine '
          +' Join Item On MoLine.ItemCode=Item.ItemCode '
          +' Left Join Uom On Item.UomCode=Uom.UomCode';
  AdoQry_Body.Close;
  AdoQry_Body.SQL.Text:=SqlText;
  AdoQry_Body.Open;
  Ado_Qry.First;
  I:=1;
  While Not Ado_Qry.Eof Do
  begin
    If Ado_Qry.fieldbyname('SScheck').AsInteger=1  Then
    begin
      SqlText:=' Select runlt As Dt '
              +' From Item '
              +' Where ItemCode='+''''+Ado_Qry.fieldbyname('ItemCode').AsString+'''';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.Open;
      If AdoQry_Tmp.Eof Then
      begin
        DispInfo('物料代码'+Ado_Qry.fieldbyname('ItemCode').AsString+'不存在,制造提前期为0天!',3);
        J:=0;
      end
      Else
        J:=AdoQry_Tmp.fieldbyname('Dt').AsInteger;
      AdoQry_Body.Append;
      AdoQry_Body.fieldbyname('MoLineNo').AsInteger:=AdoQry_Body.RecordCount+1;
      AdoQry_Body.fieldbyname('LimItOut').AsInteger:=Ado_Qry.fieldbyname('SsId').AsInteger;
      AdoQry_Body.fieldbyname('essid').asinteger:=Ado_Qry.fieldbyname('endssid').asinteger;
      AdoQry_Body.fieldbyname('ItemCode').AsString:=Ado_Qry.fieldbyname('ItemCode').AsString;
      AdoQry_Body.fieldbyname('ItemName').AsString:=Ado_Qry.fieldbyname('ItemName').AsString;
      AdoQry_Body.fieldbyname('UomName').AsString:=Ado_Qry.fieldbyname('UomName').AsString;
      AdoQry_Body.fieldbyname('SsQty').AsFloat:=Ado_Qry.fieldbyname('TMpssReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('MoInQty').AsFloat:=Ado_Qry.fieldbyname('TMpssReMainQty').AsFloat;

      AdoQry_Body.fieldbyname('MoQty').AsFloat:=Ado_Qry.fieldbyname('TMpssReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('MoNoFinishQty').AsFloat:=Ado_Qry.fieldbyname('TMpssReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('MoLineStatus').AsInteger:=5;
    //  AdoQry_Body.fieldbyname('MoLineDate').AsDateTime:=iifstring(Ado_Qry.fieldbyname('ssDate').AsDateTime<now,now,Ado_Qry.fieldbyname('ssDate').AsDateTime);
      AdoQry_Body.fieldbyname('MoLineDate').Asstring:=iifstring(Ado_Qry.fieldbyname('ssDate').AsDateTime<now,formatdatetime('yyyy.mm.dd',now),Ado_Qry.fieldbyname('ssDate').Asstring);
    //  AdoQry_Body.fieldbyname('MoStArtWorkDate').AsDateTime:=Ado_Qry.fieldbyname('ssDate').AsDateTime-J;
      AdoQry_Body.fieldbyname('MostArtworkDate').Asstring:=iifstring((Ado_Qry.fieldbyname('ssDate').AsDateTime-j)<now,formatdatetime('yyyy.mm.dd',now),datetimetostr(Ado_Qry.fieldbyname('ssDate').Asdatetime-j));
      AdoQry_Body.Post;
      getbyProduct(AdoQry_Body.fieldbyname('ItemCode').AsString,AdoQry_Body.fieldbyname('MoQty').AsFloat,AdoQry_Body.fieldbyname('MoLineDate').Asstring,AdoQry_Body.fieldbyname('MoStArtWorkDate').Asstring);
    end; //end of  If Ado_Qry.fieldbyname('SScheck').AsInteger=1
    Ado_Qry.Next;
  end;
  if  CheckAllTypeOrderNoSet(DbConnect,6) then
  begin
    Edt_MoNo.Text := GetAllTypeOrderNo(DbConnect,6);
//    If Medt_MoDate.CanFocus then     Medt_Modate.SetFocus;
  end
  else begin
    Edt_MoNo.Text := '';
//    If Edt_MoNo.CanFocus then Edt_MoNo.SetFocus;
  end;
  
  DataSource.DataSet:=AdoQry_Body;
  dataSource.DataSet.First;
end;

procedure TFrm_Mrp_Enter_NewAutoMo2.InitControls;
var
  SQlText:String;
begin
  inherited;
  if Status='Add' Then
  begin
    MEdt_Modate.Text:=Formatdatetime('yyyy.mm.dd',Date);
    Edt_DeptCode.SetFocus;
  end;
  Edt_DeptName.Enabled:=False;
  Edt_SysParamValuec.Enabled:=False;
  Cmbx_StandardFlag.ItemIndex:=1;
  SQlText:=' Select SysParam.SysParamCode,SysParam.SysParamValuec From '
          +' SysParam Where Upper(SubString(SysParamCode,1,8))=Upper('''+'SaleType'+''')';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:=SQlText;
  AdoQry_Tmp.Open;
  Edt_SysParamCode.Text:=AdoQry_Tmp.fieldbyname('SysParamCode').AsString;
  Edt_SysParamValuec.Text:=AdoQry_Tmp.fieldbyname('SysParamValuec').AsString;
end;


procedure TFrm_Mrp_Enter_NewAutoMo2.Act_SaveExecute(Sender: TObject);
var
  SqlText,MoNo:String;
  I:integer;
  BookmArk:string;
  bodymArk:string;
  mArk:TBookmArk;
begin
 try
  bodymArk:=AdoQry_Body.BookmArk;
  Edt_DeptCode.OnExit(Edt_DeptCode);
  Edt_SysParamCode.OnExit(Edt_SysParamCode);

⌨️ 快捷键说明

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