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

📄 unitprodvoucher.~pas

📁 此代码为企业原料管理代码
💻 ~PAS
字号:
unit UnitProdVoucher;

interface

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

type
  TfrmProdVoucher = class(TForm)
    PCInOut: TPageControl;
    TabSheet1: TTabSheet;
    DBGrid1: TDBGrid;
    TabSheet2: TTabSheet;
    DBGrid2: TDBGrid;
    Label1: TLabel;
    lDate: TLabel;
    Label3: TLabel;
    lInOut: TLabel;
    Bevel1: TBevel;
    Label2: TLabel;
    sbYesterday: TSpeedButton;
    sbTomrrow: TSpeedButton;
    dtpDate: TDateTimePicker;
    bbCard: TBitBtn;
    bbCardView: TBitBtn;
    bbDelete: TBitBtn;
    bbCancel: TBitBtn;
    bbViewStock: TBitBtn;
    TabSheet3: TTabSheet;
    DBGrid3: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    Table1CardID: TStringField;
    Table1OutDate: TDateField;
    Table1ProdID: TStringField;
    Table1ProcBatID: TStringField;
    Table1Number: TIntegerField;
    Table1Box: TFloatField;
    Table1OuterID: TStringField;
    Table1ManufacturerID: TStringField;
    Table1Note: TStringField;
    Table1ProdName: TStringField;
    Table1FigID: TStringField;
    Table1Manufacturer: TStringField;
    Table1Outer: TStringField;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    Button2: TButton;
    DBEdit6: TDBEdit;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Label10: TLabel;
    Label11: TLabel;
    Button3: TButton;
    BitBtn1: TBitBtn;
    DBEdit7: TDBEdit;
    Label5: TLabel;
    Label12: TLabel;
    Button1: TButton;
    procedure PCInOutChange(Sender: TObject);
    procedure bbCardClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sbTomrrowClick(Sender: TObject);
    procedure sbYesterdayClick(Sender: TObject);
    procedure bbDeleteClick(Sender: TObject);
    procedure bbCardViewClick(Sender: TObject);
    procedure bbViewStockClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure dtpDateChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
   // procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBEdit1Enter(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure DBEdit3Enter(Sender: TObject);
    procedure DBEdit3Exit(Sender: TObject);
    procedure DBEdit2Enter(Sender: TObject);
    procedure bbCancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    bInOut:boolean;
    procedure zdyShowfilterCard(dfilterDate:TDate); //  过滤当前日期

  end;

var
  frmProdVoucher: TfrmProdVoucher;
  i:integer;
implementation

uses UnitDM, UnitProdInCard, UnitProdOutCard, UnitProdStock, UnitQueryID,
  UnitProdMain;


{$R *.DFM}

//=========================================================
// 实现过程     过滤当前日期记录
//=========================================================
procedure TfrmProdVoucher.zdyShowfilterCard(dfilterDate:TDate);
var
  sCardID:string;
begin
  dtpDate.date:=dfilterDate;
  sCardID:=formatdatetime('yymmdd',dtpDate.date);
  lDate.Caption:=formatdatetime('yyyy"年"mm"月"dd"日"',dtpDate.date);

//========================================================
// 判断当前状态是入还是出库 改变界面上的某些颜色,字体设置
//=========================================================
  if bInOut then //是入库
  begin
    pcInOut.ActivePageIndex:=0;
    bbCard.caption:='填写入库单'+#13+'(Enter)';
    lInOut.Font.Color:=clblue;
    lInOut.caption:='入库单';
  end
  else  //是出库
  begin
    pcInOut.ActivePageIndex:=1;
    bbCard.caption:='填写出库单'+#13+'(Enter)';
    lInOut.Font.Color:=clred;
    lInOut.caption:='出库单';
  end; //if

//===================
//table开始过滤
//===================
  with dm.tabProdInCard do
  begin
    Open;
    filter:=format('CardID = ''%S''',[sCardID+'*']); //默认过滤条件是今天
    if not filtered then //开始过滤
      filtered:= true;
  end;//with
  with dm.tabProdOutCard do
  begin
    Open;
    filter:=format('CardID = ''%S''',[sCardID+'*']); //默认过滤条件是今天
    if not filtered then //开始过滤
      filtered:= true;
  end;//with

end;


procedure TfrmProdVoucher.PCInOutChange(Sender: TObject);
begin
  case pcInOut.ActivePageIndex of
  0:    bInOut:=true ;
  1:    bInOut:=false;
  2:    if pcInOut.ActivePageIndex=2 then
        begin
        DateTimePicker1.date:=date-30;
        DateTimePicker2.date:=date;
        bbCard.visible:=false;
        bbCardView.visible:=false;
        bbDelete.visible:=false;
        bbViewStock.visible:=false;
        bbCancel.visible:=false;
        dtpDate.visible:=false;
        sbYesterday.visible:=false;
        sbTomrrow.visible:=false;
        Label2.visible:=false;
        Bevel1.visible:=false;
        Label1.visible:=false;
        Label3.visible:=false;
        lInOut.visible:=false;
        Button2.enabled:=false;
         exit;
        end;
  end; //case
    bbCard.visible:=true;
    bbCardView.visible:=true;
    bbDelete.visible:=true;
    bbViewStock.visible:=true;
    bbCancel.visible:=true;
    dtpDate.visible:=true;
    sbYesterday.visible:=true;
    sbTomrrow.visible:=true;
    Label2.visible:=true;
    Bevel1.visible:=true;
    Label1.visible:=true;
    Label3.visible:=true;
    lInOut.visible:=true;
  zdyShowfilterCard(dtpDate.date);

end;

procedure TfrmProdVoucher.bbCardClick(Sender: TObject);
var
  sCardID:string;
begin
  if( dtpdate.date-1) <= dm.zdyGetProdCheckDate then
    begin
    showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
    exit;
  end; //if
//==========================================
// 设置入,出库单上的eDate, dbeCardID的值
//==========================================
  sCardID:=dm.zdyProdCardID(dtpDate.date);

  if bInOut then  //入库
  begin
    with frmProdInCard do
    begin
      with dm.tabProdIncard do
      begin
        if not active then open;
        append;
      end;//with

      dbeDate.text:=datetostr(dtpDate.date);
      dbeCardID.text:=sCardID;
      sInDate:=dbeDate.text;
      sInID:=dbeCardID.text;
      activecontrol:=dbeProdName;
      top:=50;
      showmodal;
    end;//with
  end
  else     //领料
  begin
    with frmProdOutCard do
    begin
      with dm.tabProdOutcard do
      begin
        if not active then open;
        append;
      end;//with
      dbeDate.text:=datetostr(dtpDate.date);
      dbeCardID.text:=sCardID;
      sOutDate:=dbeDate.text;
      sOutID:=dbeCardID.text;
      activecontrol:=dbeProdName;
      top:=50;
      showmodal;
    end;//with
  end; //if

end;

procedure TfrmProdVoucher.FormCreate(Sender: TObject);
begin
  bInOut:=true;
  i:=0;
end;

procedure TfrmProdVoucher.sbTomrrowClick(Sender: TObject);
begin
  dtpdate.date:=dtpdate.date+1;
  if (dtpdate.date-1)<= dm.zdyGetProdCheckDate then
    begin
    showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
    exit;
  end; //if
  zdyShowfilterCard(dtpdate.date);

end;

procedure TfrmProdVoucher.sbYesterdayClick(Sender: TObject);
begin
  dtpdate.date:=dtpdate.date - 1;
  if (dtpdate.date-1) <= dm.zdyGetProdCheckDate then
    begin
    showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
    exit;
  end; //if
  zdyShowfilterCard(dtpdate.date);

end;

procedure TfrmProdVoucher.bbDeleteClick(Sender: TObject);
begin
//==============================
// 检查表格是否为空
//==============================
  if dm.zdyProdIFBlank(bInOut) then
  begin
    showmessage('没有记录');
    exit;
  end; //if

  if MessageDlg('真的要删除该记录吗?',mtwarning,[mbyes,mbno],0) = mryes then
  begin
    if bInOut then
      dm.tabProdIncard.delete
    else
      dm.tabProdOutCard.delete;
  end; //if

//===========================
// 更新仓库记录
//===========================
  frmProdStock.zdyCurStock(dm.zdyGetProdCheckDate);
  
end;

procedure TfrmProdVoucher.bbCardViewClick(Sender: TObject);
begin
//==============================
// 检查表格是否为空
//==============================
  if dm.zdyProdIFBlank(bInOut) then
  begin
    showmessage('没有记录');
    exit;
  end; //if

//===================================
// 设置table 控件 为编辑状态 dsEdit
//===================================
  if bInOut and (dm.tabProdIncard.active) then
  begin
    with frmProdInCard do
    begin
      showmodal;
    end; //with
  end
  else if (not bInOut) and (dm.tabProdOutCard.active) then
  begin
    with frmProdOutCard do
    begin
      showmodal;
    end; //with
  end
  else
    showmessage('没有记录!');



end;

procedure TfrmProdVoucher.bbViewStockClick(Sender: TObject);
var
  sProdID:string;
  dDate:TDate;
begin
//==============================
// 检查表格是否为空
//==============================
 // if dm.zdyProdIFBlank(bInOut) then
 // begin
   // showmessage('没有记录');
   // exit;
  //end; //if

//==============================
// 查看该物品的库存
//==============================
  if bInOut then
    sProdID:=dm.tabProdIncard.fieldbyname('ProdID').asstring
  else
    sProdID:=dm.tabProdOutcard.fieldbyname('ProdID').asstring;

  with dm.tabProdStock do
  begin
    open;
    setkey;
    if not findkey([sProdID]) then
    begin
      showmessage('请先查出该产品或任一产品,'+#13'然后再按“查看库存”键!');
      exit;
    end; //if
  end; //with

  frmProdStock.showmodal;

end;

procedure TfrmProdVoucher.DBGrid1DblClick(Sender: TObject);
begin
  bbCardViewClick(sender);
end;

procedure TfrmProdVoucher.DBGrid2DblClick(Sender: TObject);
begin
  bbCardViewClick(sender);

end;

procedure TfrmProdVoucher.dtpDateChange(Sender: TObject);
begin
  zdyShowfilterCard(dtpdate.date);
end;

procedure TfrmProdVoucher.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 try
   if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
 // exit;
 // if Key=190 then
  exit;
  except
  end;
 end;

procedure TfrmProdVoucher.Button2Click(Sender: TObject);
begin
  if (dm.zdyGetProdCheckDate >= strtodatetime(DBEdit7.Text)) then
    begin
      showmessage('您选择的结帐日期早于上次结帐日期!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetprodCheckDate));
      // showmodal;
       //frmProdMain.Visible:=true;
      exit;
    end; // if
 if i<>1 then
  begin
  showmessage('要修改记录,请先按“修改”按钮!');
  exit;
  end;
  Table1.open;
  Table1.edit;
  Table1.post;
  DBEdit6.text:='';
  DBEdit1.text:='';
  DBEdit2.text:='';
  DBEdit3.text:='';
  DBEdit4.text:='';
  DBEdit5.text:='';
  DBEdit7.text:='';
  i:=0;

end;



procedure TfrmProdVoucher.Button3Click(Sender: TObject);
begin
 dm.tabManufacturer.filtered:=false;
 Table1.open;
 Table1.Filtered:=true;
end;

procedure TfrmProdVoucher.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
  var
  sfrom,sto :Tdate;
begin
  sfrom:=DateTimePicker1.date;
  sto:=DateTimePicker2.date;
  if (Table1.fieldbyname('OutDate').asdatetime>=sfrom) and (Table1.fieldbyname('OutDate').asdatetime<=sto) then
   Accept:=true
   else
   Accept:=false;
   end;


procedure TfrmProdVoucher.BitBtn1Click(Sender: TObject);
begin
  table1.Close;
  close;
end;

procedure TfrmProdVoucher.DBEdit1Enter(Sender: TObject);
begin
    if i<>1 then
  begin
  showmessage('要修改记录,请先按“修改”按钮!');
  exit;
  end;
    frmCommQueryID.PageControl1.ActivePageIndex:=1;
    frmCommQueryID.ActiveControl:=frmCommQueryID.dbgProdDictionary;

        if frmCommQueryID.showmodal = mrok then
        begin
          DBEdit1.SetFocus;
          DBEdit1.text:=frmCommQueryID.query1.fieldbyname('ProdID').asstring;
        end;
end;

procedure TfrmProdVoucher.Button1Click(Sender: TObject);
begin
  if (DBEdit1.text='') or (DBEdit2.text='') or (DBEdit3.text='') or (DBEdit6.text='') then
  begin
  showmessage('请先找出要修改的记录!');
  exit;
  end;
  i:=1;
  Button2.enabled:=true;
  //Table1.open;
  Table1.edit;
end;



procedure TfrmProdVoucher.DBEdit3Enter(Sender: TObject);
begin
   if i<>1 then
  begin
  showmessage('要修改记录,请先按“修改”按钮!');
  exit;
  end;
  frmCommQueryID.top:=DBEdit3.Height+DBEdit3.top;
  frmCommQueryID.left:=DBEdit3.left;
  //Table2.Close;
  DBEdit3.color:=claqua;


        frmCommQueryID.PageControl1.ActivePageIndex:=2;

        frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;

        if frmCommQueryID.showmodal = mrok then
        begin

          DBEdit3.text:=frmCommQueryID.Query4.fieldbyname('ManufacturerID').asstring;
           //with dm.tabManufacturer do
          //begin
           // filter:=format('ManufacturerID = ''%S''',[Edit1.text]);
            //filtered:=true;
            //close;
            //open;
          //end; //with
         
        end; //if
end;

procedure TfrmProdVoucher.DBEdit3Exit(Sender: TObject);
begin
 DBEdit3.color:=clwindow;
end;

procedure TfrmProdVoucher.DBEdit2Enter(Sender: TObject);
begin
 if i<>1 then
  begin
  showmessage('要修改记录,请先按“修改”按钮!');
  exit;
  end;
end;

procedure TfrmProdVoucher.bbCancelClick(Sender: TObject);
begin
 dm.tabProdOutcard.Close;
 dm.tabProdincard.close;
 frmProdMain.show;
 close;
end;

procedure TfrmProdVoucher.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  dm.tabProdOutcard.Close;
 dm.tabProdincard.close;
 frmProdMain.show;
 close;
end;

end.

⌨️ 快捷键说明

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