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

📄 unttransfernotydispose.pas

📁 是分布式粮库程序,是采用Delphi实现的
💻 PAS
字号:
unit UntTransferNotyDispose;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, DB, DBTables, DBCtrls, StdCtrls, Grids,
  DBGrids, Buttons;

type
  TFrmTransferNotyDispose = class(TForm)
    Panel1: TPanel;
    Splitter1: TSplitter;
    PnlLeft: TPanel;
    Panel3: TPanel;
    Splitter2: TSplitter;
    PnlBotn: TPanel;
    Panel4: TPanel;
    PnlBrowse: TPanel;
    Splitter3: TSplitter;
    PnlItemGrid: TPanel;
    btnOut: TBitBtn;
    btnExit: TBitBtn;
    PageCtrlNoty: TPageControl;
    tsUnfinished: TTabSheet;
    tsFinished: TTabSheet;
    DBGrdMasterFinished: TDBGrid;
    DBGrdMasterUnfinished: TDBGrid;
    lblTitle: TLabel;
    lblQianfa: TLabel;
    LblManager: TLabel;
    LblClerk: TLabel;
    Label1: TLabel;
    Label13: TLabel;
    DBGridItem: TDBGrid;
    DataSourceMaster: TDataSource;
    DataSourceItem: TDataSource;
    DBTxtSignDate: TDBText;
    DBTxtNotyNo: TDBText;
    DBText3: TDBText;
    DBTxtManager: TDBText;
    DBTxtClerk: TDBText;
    DBText14: TDBText;
    Shape4: TShape;
    Shape1: TShape;
    Shape2: TShape;
    Shape9: TShape;
    Shape3: TShape;
    Shape5: TShape;
    Shape6: TShape;
    tsAllNoty: TTabSheet;
    DBGrdMasterAll: TDBGrid;
    TblItem: TTable;
    TblItemNOTY_ITEM_ID: TStringField;
    TblItemNOTY_ID: TIntegerField;
    TblItemFOOD_TYPE: TStringField;
    TblItemATTRIBUTE: TStringField;
    TblItemATTACHMENT: TStringField;
    TblItemQUANTITY: TFloatField;
    TblItemCOST: TFloatField;
    TblItemPRICE: TFloatField;
    TblItemMEMO: TStringField;
    TblItemSTATUS: TIntegerField;
    TblItemSETTLEMENT: TStringField;
    BitBtnFinished: TBitBtn;
    LblUnitName: TLabel;
    DBTxtCounterpart: TDBText;
    LblCounterpart: TLabel;
    DBTxtUnitName: TDBText;
    LblAuthorityNO: TLabel;
    DBTxtAuthorityNO: TDBText;
    DBTxtStart: TDBText;
    DBTxtEnd: TDBText;
    LblSNTime: TLabel;
    LblSettlement: TLabel;
    LblVSettlement: TLabel;
    LblVFoodType: TLabel;
    Label8: TLabel;
    LblVAttribute: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    LblTotal: TLabel;
    LblVTotal: TLabel;
    LblPrice: TLabel;
    LblVPrice: TLabel;
    LblSum: TLabel;
    LblVSum: TLabel;
    Label2: TLabel;
    TblUnit_info: TTable;
    DataSourceUnit_info: TDataSource;
    TblMaster: TTable;
    TblMasterAUTHORITY_NO: TStringField;
    TblMasterNOTY_NO: TStringField;
    TblMasterNOTY_ID: TIntegerField;
    TblMasterPLAN_ID: TStringField;
    TblMasterNOTY_TYPE: TIntegerField;
    TblMasterCOUNTERPART: TStringField;
    TblMasterCLERK: TStringField;
    TblMasterMANAGER: TStringField;
    TblMasterSTATUS: TIntegerField;
    TblMasterMEMO: TStringField;
    TblMasterUNIT_ID: TIntegerField;
    TblMasterSIGN_DATE: TStringField;
    TblMasterSTART_TIME: TDateTimeField;
    TblMasterFINISH_TIME: TDateTimeField;
    TblMasterINPUT_TIME: TDateTimeField;
    TblMasterUnitName: TStringField;
    TblItembusiness_type: TStringField;
    DBTextBusinessType: TDBText;
    TblMasterCOM_FLAG: TIntegerField;
    procedure PageCtrlNotyChange(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure TblMasterAfterScroll(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure btnOutClick(Sender: TObject);
    procedure BitBtnFinishedClick(Sender: TObject);
    procedure DBGrdMasterAllDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    procedure DBGrdMasterUnfinishedDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    procedure DBGridItemDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Procedure FreshInNoty();
  public
    { Public declarations }
  end;

var
  FrmTransferNotyDispose: TFrmTransferNotyDispose;

implementation

uses UnitDataModul,UntTransferStore, UntInNotyDispose, Global;

{$R *.dfm}

procedure TFrmTransferNotyDispose.PageCtrlNotyChange(Sender: TObject);
begin
// NOTY_TYPE=1表明是入库单,STATUS:0-未处理;1-部分处理;2-已处理。
if PageCtrlNoty.ActivePage = tsAllNoty then
  begin
    TblMaster.Close;
    TblMaster.Filtered := False;
    TblMaster.Filter := 'NOTY_TYPE=2 and  UNIT_ID='+IntToStr(global.g_user.UnitID);
    TblMaster.Filtered := true;
    TblMaster.Open;
  end;
if PageCtrlNoty.ActivePage = tsUnFinished then
  begin
    TblMaster.Close;
    TblMaster.Filtered := False;
    TblMaster.Filter := 'NOTY_TYPE=2 and (STATUS=0 OR STATUS=1) and UNIT_ID='+IntToStr(global.g_user.UnitID);
    TblMaster.Filtered := true;
    TblMaster.Open;
  end;

if PageCtrlNoty.ActivePage = tsFinished then
  begin
    TblMaster.Close;
    TblMaster.Filtered := False;
    TblMaster.Filter := 'NOTY_TYPE=2 and STATUS=2 and UNIT_ID='+IntToStr(global.g_user.UnitID);
    TblMaster.Filtered := true;
    TblMaster.Open;
  end;
end;

procedure TFrmTransferNotyDispose.btnExitClick(Sender: TObject);
begin
  close;
end;

procedure TFrmTransferNotyDispose.FreshInNoty();
var
  i: integer;          
  sum,quantity,price: real;
  FlagFoodType,FlagAttribute,FlagSettlement,FlagPrice: boolean;
  StrSettlement,StrFoodType,StrAttribute: string;
begin
  LblVSettlement.Caption := '';
  LblVAttribute.Caption := '';
  LblVFoodType.Caption := '';
  LblVTotal.Caption := '';
  LblVSum.Caption := '';
  LblVPrice.Caption := '';
  sum := 0;
  quantity := 0;
  price := 0;
  StrSettlement := '';
  StrFoodType := '';
  StrAttribute := '';
  FlagSettlement := true;
  FlagFoodType := true;
  FlagAttribute := true;
  FlagPrice := true;
  if TblItem.RecordCount>0 then
    begin
      TblItem.First;
      price := TblItem.FieldByName('PRICE').AsFloat;
      strSettlement := TblItem.FieldByName('SETTLEMENT').AsString;
      StrFoodType := TblItem.FieldByName('FOOD_TYPE').AsString;
      StrAttribute := TblItem.FieldByName('ATTRIBUTE').AsString;
      for i:=1 to TblItem.RecordCount do
        begin
          if strSettlement <> TblItem.FieldByName('SETTLEMENT').AsString then
            FlagSettlement := false;
          if ABS(Price-TblItem.FieldByName('PRICE').AsFloat)>0.000001 then
            FlagPrice := false;
          if StrFoodType <> TblItem.FieldByName('FOOD_TYPE').AsString then
            FlagFoodType := false;
          if StrAttribute <> TblItem.FieldByName('ATTRIBUTE').AsString then
            FlagAttribute := false;
          sum := sum+TblItem.FieldByName('PRICE').Asfloat*TblItem.FieldByName('QUANTITY').Asfloat;
          quantity := quantity+TblItem.FieldByName('QUANTITY').Asfloat;
          TblItem.Next;
        end;
    end;
  if abs(quantity)>0.0000001 then
    LblVTotal.Caption := FloatToStr(quantity);
  if abs(sum)>0.000001 then
    LblVSum.Caption := FloatToStr(sum);
  if FlagSettlement then
    LblVSettlement.Caption := StrSettlement;
  if FlagFoodType  then
    LblVFoodType.Caption := StrFoodType;
  if FlagAttribute then
    LblVAttribute.Caption := StrAttribute;
  if FlagPrice and (TblItem.FieldByName('PRICE').AsFloat<>0) then
    LblVPrice.Caption := FloatToStr(Price);
end;

procedure TFrmTransferNotyDispose.TblMasterAfterScroll(DataSet: TDataSet);
begin
  FreshInNoty();
end;

procedure TFrmTransferNotyDispose.FormShow(Sender: TObject);
begin
  FreshInNoty();
end;

procedure TFrmTransferNotyDispose.btnOutClick(Sender: TObject);
var
  QryCX:TQuery;
begin
  if TblItem.FieldByName('NOTY_ITEM_ID').AsString = '' then
    begin
      showmessage('请选择要处理的移库通知单细目!');
      exit;
    end;
  if TblItem.FieldByName('STATUS').AsInteger = 1 then
    //if MessageDlg('此移库通知单已处理,确实还要生成移库单吗?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then
    if Application.MessageBox('此移库通知单已处理,确实还要生成移库单吗?','程序执行确认',MB_YesNo+MB_IconQuestion+MB_ApplModal)=IdNo then
      exit;

  FrmTransferStore := TFrmTransferStore.Create(FrmTransferNotyDispose);

    //FrmTransferStore.LblNotyItem.Enabled:=true;
    FrmTransferStore.BitBtnSlctNotyItem.Enabled:=true;
    //FrmTransferStore.LblInUnit.Enabled:=true;
    FrmTransferStore.DBLkpCmbxRecieve.Enabled:=true;
    //FrmTransferStore.LblOutN.Enabled:=true;
    FrmTransferStore.DBLookupComboBox4.Enabled:=true;
    //FrmTransferStore.LblOutQ.Enabled:=true;
    FrmTransferStore.DBEditNotyQuantity.Enabled:=true;
    //FrmTransferStore.LbloutClerk.Enabled:=true;
    FrmTransferStore.DBEdtoutClerk.Enabled:=true;
    //FrmTransferStore.LblOutCheck.Enabled:=true;
    FrmTransferStore.DBCheckBox2.Enabled:=true;
    FrmTransferStore.BitBtnNew.Enabled:=true;
    FrmTransferStore.BitBtnDelete.Enabled:=true;

  FrmTransferStore.DBGrid1.DataSource.DataSet.Edit;
  FrmTransferStore.DBGrid1.DataSource.DataSet.Append;
  FrmTransferStore.DBEditUnitID.Field.AsInteger := Global.g_user.UnitID;
  FrmTransferStore.DBEdtOutClerk.Field.AsString := Global.g_user.UserName;
  FrmTransferStore.DBEditDatetime.Field.AsDateTime := date;
  FrmTransferStore.DBCheckBox1.Checked:=false;
  FrmTransferStore.DBCheckBox2.Checked:=false;
  try
    QryCX := TQuery.Create(nil);
    QryCX.DatabaseName := 'LYDB';
    QryCX.SQL.Clear;
    QryCX.SQL.Add('select * from ENT_UNIT_INFO where Unit_name='''+TblMaster.FieldByName('COUNTERPART').AsString+'''');
    QryCX.Open;
    if QryCX.RecordCount<>1 then
      showmessage('接受单位不对!')
    else
      FrmTransferStore.DBLkpCmbxRecieve.Field.AsInteger := QryCX.FieldByName('UNIT_ID').AsInteger;
  finally
    QryCX.Close;
    QryCX.Free;
  end;
  FrmTransferStore.DBEditNotyItemID.Field.AsString := TblItem.FieldByName('NOTY_ITEM_ID').AsString;
  FrmTransferStore.DBEditNotyQuantity.Field.AsFloat := TblItem.FieldByName('QUANTITY').AsFloat;
  FrmTransferStore.DBLookupComboBox4.Field.AsString := TblItem.FieldByName('FOOD_TYPE').AsString;
  FrmTransferStore.DBEditKey.Enabled:=true;
  FrmTransferStore.DBEditKey.SetFocus;
  FrmTransferStore.Visible:=false;
  FrmTransferStore.ShowModal;

end;

procedure TFrmTransferNotyDispose.BitBtnFinishedClick(Sender: TObject);
var
  Qry:Tquery;
  Flag: boolean;
  i: integer;
begin
  if TblItem.FieldByName('NOTY_ITEM_ID').AsString = '' then
    begin
      showmessage('请选择要处理的移库通知单细目!');
      exit;
    end;
  TblItem.Edit;
  TblItem.FieldByName('STATUS').AsInteger:=1;
  TblItem.Post;
  Flag := false;
  TblItem.First;
  for i:=0 to TblItem.RecordCount do
    begin
      if TblItem.FieldByName('STATUS').AsInteger = 0 then
        Flag := true;
      TblItem.Next;
    end;
  try
    Qry:=TQuery.Create(nil);
    Qry.DatabaseName:='LYDB';
    Qry.Close;
    Qry.SQL.Clear;
    Qry.SQL.Add('UPDATE ENT_NOTY SET STATUS=:V_STATUS WHERE NOTY_ID=:V_NOTY_ID');
    if Flag = true then
      Qry.Params[0].AsInteger := 1
    else
      Qry.Params[0].AsInteger := 2;
    Qry.Params[1].AsInteger := TblItem.FieldByName('NOTY_ID').AsInteger;
    Qry.ExecSQL;
  finally
    Qry.Close;
    Qry.Free;
  end;
end;

procedure TFrmTransferNotyDispose.DBGrdMasterAllDrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if TblMaster.FieldByName('STATUS').AsInteger = 0 then
    DBGrdMasterAll.Canvas.Font.Color := clRed;
  if TblMaster.FieldByName('STATUS').AsInteger = 1 then
    DBGrdMasterAll.Canvas.Font.Color := clBlue;
  DBGrdMasterAll.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TFrmTransferNotyDispose.DBGrdMasterUnfinishedDrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if TblMaster.FieldByName('STATUS').AsInteger = 0 then
    DBGrdMasterUnfinished.Canvas.Font.Color := clRed;
  if TblMaster.FieldByName('STATUS').AsInteger = 1 then
    DBGrdMasterUnfinished.Canvas.Font.Color := clBlue;
  DBGrdMasterUnfinished.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TFrmTransferNotyDispose.DBGridItemDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if TblItem.FieldByName('STATUS').AsInteger = 0 then
    DBGridItem.Canvas.Font.Color := clRed;
  DBGridItem.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TFrmTransferNotyDispose.FormCreate(Sender: TObject);
begin
  TblMaster.Close;
  TblMaster.Filtered := False;
  TblMaster.Filter := 'NOTY_TYPE=2 and UNIT_ID='+IntToStr(global.g_user.UnitID);
  TblMaster.Filtered := true;
  TblMaster.Open;
end;

end.

⌨️ 快捷键说明

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