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

📄 pm_enter_newfreepasspo.pas

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

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, DBCtrls, jpeg, ExtPrintReport;

Type
  TFrm_Pm_Enter_NewFreePassPo = Class(TFrm_Base_Check)
    AdoQry_HeadPONO: TStringField;
    AdoQry_HeadPOLINENo: TIntegerField;
    AdoQry_HeadItemCode: TStringField;
    AdoQry_HeadPOLineDATE: TDateTimeField;
    AdoQry_HeadPOQTY: TFloatField;
    AdoQry_HeadPONoFinishQty: TFloatField;
    AdoQry_HeadPOREFERENCEDPRICE: TIntegerField;
    AdoQry_HeadPOLINESTATUS: TIntegerField;
    AdoQry_HeadPoNoTaxPrice: TFloatField;
    AdoQry_HeadPONoTaxAmount: TBCDField;
    AdoQry_HeadPoTaxPrice: TFloatField;
    AdoQry_HeadPoTaxAmount: TBCDField;
    AdoQry_HeadPOStArtWorkDate: TDateTimeField;
    AdoQry_HeadVendorCode: TStringField;
    AdoQry_HeadVendorName: TStringField;
    AdoQry_HeadItemName: TStringField;
    AdoQry_HeadPoDate: TDateTimeField;
    AdoQry_HeadEmployeeCode: TStringField;
    AdoQry_HeadEmployeeName: TStringField;
    AdoQry_HeadUomName: TStringField;
    AdoQry_HeadEmployeeFlag: TStringField;
    AdoQry_HeadItemFlag: TStringField;
    AdoQry_HeadVendorFlag: TStringField;
    Label2: TLabel;
    DBText2: TDBText;
    Label3: TLabel;
    DBText3: TDBText;
    AdoQry_HeadPoLineCheck: TIntegerField;
    AdoQry_HeadPmCode: TIntegerField;
    AdoQry_HeadQclt: TIntegerField;
    Label1: TLabel;
    DBText1: TDBText;
    AdoQry_HeadPOQTY2: TFloatField;
    AdoQry_HeadPOType: TIntegerField;
    AdoQry_HeadPassEmployeeCode: TStringField;
    AdoQry_HeadVendorOrdinal: TIntegerField;
    AdoQry_HeadReferenceNo: TStringField;
    Button5: TButton;
    procedure Act_CancelCheckExecute(Sender: TObject);
    procedure Act_CheckExecute(Sender: TObject);
    procedure DBGridEhDblClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure AdoQry_HeadBeforeInsert(DataSet: TDataSet);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure Act_LookExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Act_DeleteExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    Flag:Boolean;
    Function SavePoLineHistory(Status1:String):Boolean;//保存历史记录
    Function  SavePoLineHistory1(Status1:String):Boolean;//保存历史记录
    procedure UpDatePoline(PoNo:string;PoLineNo:integer);
    procedure CloseRecord; //关闭
    procedure OpenRecord; //打开
    { Private declarations }
  public
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    procedure DeleteRecord;
    function getQclt(ItemCode:string):string;{ Public declarations }
    function beendilivered(pono:string;polineno:integer):boolean;
    function existssonItem(ItemCode:string):boolean;
    function  IsBomChange(ItemCode:String;MoDate:String):boolean;
    { Public declarations }
  end;

var
  Frm_Pm_Enter_NewFreePassPo: TFrm_Pm_Enter_NewFreePassPo;

implementation

uses Sys_Global,Pm_Enter_PoSsParent, Pm_Enter_PassPo_D,
   Mrp_Global, Mrp_Enter_NewMoSsParent, Bas_BomQry;

{$R *.DFM}     

function  TFrm_Pm_Enter_NewFreePassPo.IsBomChange(ItemCode:String;MoDate:String):boolean;
var AdoQry : TAdoQuery;
    SqlText : String;
begin
  Result := False;
  AdoQry := TAdoQuery.Create(self)  ;
  AdoQry.Connection := Dbconnect;
  AdoQry.EnableBCD := False;
  try
    SqlText := 'select logid from BomChangeInfo '
             + ' where ite_ItemCode='+QuotedStr(ItemCode) 
             +'   and  LogDate> '+QuotedStr(MoDate);
    ExecuteSql(AdoQry,SqlText,0)             ;
    if AdoQry.RecordCount>0 then Result := True;
  finally
    AdoQry.free;
  end;
end;


function TFrm_Pm_Enter_NewFreePassPo.existssonItem(ItemCode:string):boolean;
var sqltext:string;
    AdoQry:TAdoQuery;
begin
 Result:=True;
 SqlText:=' Select * From Bom '
         +' Where ite_ItemCode='+quotedstr(ItemCode)
         +' And Bomstatus in (0,2)';
 AdoQry:=TAdoQuery.Create(self);
  AdoQry.Connection:=dbconnect;
 try
 AdoQry.Close;
 AdoQry.SQL.Text:=SqlText;
 AdoQry.Open;
 if AdoQry.RecordCount=0 then Result:=False;
 finally
 AdoQry.Free;
 end;

end;


procedure TFrm_Pm_Enter_NewFreePassPo.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
begin
  Application.ProcessMessages;
  Inherited;
  SelectFromSql:=' Select Distinct PoLine.*, Po.*,Vendor.VendorName,Item.ItemName,Item.PmCode,Item.Qclt,Employee.EmployeeName,Uom.UomName,'
                +' Employee.EmployeeCode+'''+' '+'''+Employee.EmployeeName As EmployeeFlag,'
                +' Item.ItemCode+'''+' '+'''+Item.ItemName As ItemFlag, '
                +' Vendor.VendorCode+'''+' '+'''+Vendor.VendorName As VendorFlag '
                +' From  Po'
                +' Left Join PoLine On Po.PoNo=PoLine.PoNo '
                +' Left Join Item On PoLine.ItemCode=Item.ItemCode '
        //        +' And ((POLineStatus=5) Or (POLineStatus=6))'
                +' Left Join Vendor On Po.VendorCode=Vendor.VendorCode '
                +' Left Join Employee On Employee.EmployeeCode=Po.EmployeeCode '
                +' Left Join Uom On Uom.UomCode=Item.UomCode ';
  condition:='POLineStatus=5 ';
  ConditionUserDefine:='(Po.PoNo  In (Select Po.PoNo From Po join PoLine on Po.PoNo=PoLine.PoNo) and (po.PoSpecial=1) and (PoLine.POlinestatus in (5,6)))';
  OrderByFields:='EmployeeCode,PoNo';
  GetData;
{  Frm_Sys_Condition:=TFrm_Pm_Enter_FreePassPo_C.Create(Self);
  ConditionUserDefine:=' (Po.PoNo  In (Select po.PoNo From Po join PoLine on Po.PoNo=PoLine.PoNo) and (po.PoSpecial=1) and (PoLine.POlinestatus in (5,6)))';
  OrderByFields:='EmployeeCode,PoNo';
  Act_Filter.Execute;}
  Flag:=False;
  Application.ProcessMessages;
  DbgridEh.SetFocus;
end;

Function TFrm_Pm_Enter_NewFreePassPo.SavePoLineHistory(Status1:String):Boolean;
var
  SqlText:String;
begin
  Try
    SqlText:='Insert PoLineHistory '
            +' (PoNo,PoLineNo,ItemCode,POLineDate,PoStArtWorkDate,POQty,POTaxPrice,POTaxAmount,PONoTaxPrice,'
            +' PONoTaxAmount,PONoFinishQty,POReferencedPrice,POLineStatus,PassEmployeeCode,PolChgEmployeeCode,PolChgTime,PolChgType)'
            +'Values('
            +''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
            +''''+IntToStr(AdoQry_Head.fieldbyname('PoLineNo').AsInteger)+''''+','
            +''''+AdoQry_Head.fieldbyname('ItemCode').AsString+''''+','
            +''''+DatetimeToStr(AdoQry_Head.fieldbyname('PoLineDate').AsDateTime)+''''+','
            +''''+DatetimeToStr(AdoQry_Head.fieldbyname('PoStArtWorkDate').AsDateTime)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('PoQty').AsFloat)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('POTaxPrice').AsFloat)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('POTaxAmount').AsFloat)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('PONoTaxPrice').AsFloat)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('PONoTaxAmount').AsFloat)+''''+','
            +''''+FloatToStr(AdoQry_Head.fieldbyname('PONoFinishQty').AsFloat)+''''+','
            +''''+IntToStr(AdoQry_Head.fieldbyname('POReferencedPrice').AsInteger)+''''+','
            +''''+IntToStr(AdoQry_Head.fieldbyname('POLineStatus').AsInteger)+''''+','
            +quotedstr(AdoQry_Head.fieldbyname('PassEmployeeCode').asstring)+','
            +''''+UserCode+''''+','
            +'GetDate(),';
            if Status1='Edit' then
               SqlText:=SqlText+''''+'更改行状态'+''''+')'
            else
              if Status1='Delete' then
                 SqlText:=SqlText+''''+'删除记录'+''''+')';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.ExecSQL;
    Result:=True;
  Except
    Result:=False;
  end;
end;


procedure TFrm_Pm_Enter_NewFreePassPo.OpenRecord;
var
  SqlText,BookMArk:String;
  I,tmpordinal:Integer;
begin
  BookMArk:=AdoQry_Head.BookmArk;
  AdoQry_Head.First;
  I:=1;
  Try
    While Not AdoQry_Head.Eof Do
      If (AdoQry_Head.fieldbyname('PoLineCheck').AsInteger=1)
        And (AdoQry_Head.fieldbyname('PoLineStatus').AsInteger=5) Then
       begin
         SqlText:=' Select * From PoLine '
              +' Where PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
              +' And PoLineNo='''+IntToStr(AdoQry_Head.fieldbyname('PoLineNo').AsInteger)+'''';
//              +' And PoLineStatus=5';
         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
         else
         begin
           if AdoQry_Tmp.fieldbyname('PoLineStatus').asfloat<> 5 then
             begin
               If DbConnect.InTransaction Then
                 DbConnect.RollBackTrans;
                 DispInfo('选定的第'+IntToStr(I)+'条采购订单记录行状态已被其它用户修改,请刷新!',3);
                 Abort;
             end;
          if AdoQry_Head.fieldbyname('poType').asinteger=1 then 
          if not existssonItem(AdoQry_tmp.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;
              i:=i+1;
              continue;
             end;
          end;

         end;
         DbConnect.beginTrans;
         SavePoLineHistory('Edit');
         sqltext:='select max(Vendorordinal) as ordinal from po where VendorCode='
                 +quotedstr(AdoQry_Head.fieldbyname('VendorCode').asstring);
         Executesql(AdoQry_tmp,sqltext,0);
         if AdoQry_tmp.RecordCount<>0 then
          tmpordinal:=AdoQry_tmp.fieldbyname('ordinal').asinteger;
         SqlText:=' Update PoLine '
                 +' set PoLineStatus=6,'
                 +'     PassEmployeeCode='+quotedstr(userCode)+','
                 +'     confirmtime=Getdate()'
                 +' Where PoLine.PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
                 +' And PoLine.PoLineNo='''+AdoQry_Head.fieldbyname('PoLineNo').AsString+''''
                 +' And PoLine.PoLineStatus=5';
         AdoQry_Tmp.Close;
         AdoQry_Tmp.SQL.Text:=SqlText;
         AdoQry_Tmp.ExecSQL;
         savepohistory(dbconnect,AdoQry_Head.fieldbyname('pono').asstring,userCode,3);

⌨️ 快捷键说明

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