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

📄 unitprodoutcard.pas

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

interface

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

type
  TfrmProdOutCard = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    Panel1: TPanel;
    Panel7: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Panel17: TPanel;
    dbeNote: TDBEdit;
    dbeNum: TDBEdit;
    dbeProdID: TDBEdit;
    dbeProdName: TDBEdit;
    bbPrior: TBitBtn;
    bbNext: TBitBtn;
    bbPost: TBitBtn;
    bbClose: TBitBtn;
    dbeCardID: TDBEdit;
    Panel3: TPanel;
    dbeFigID: TDBEdit;
    Panel4: TPanel;
    dbeProcID: TDBEdit;
    Panel5: TPanel;
    bbLocal: TBitBtn;
    dbeDate: TDBEdit;
    Panel6: TPanel;
    dbeBox: TDBEdit;
    Panel2: TPanel;
    DBEdit1: TDBEdit;
    dbeManufacturer: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    dbeOuter: TDBEdit;
    procedure dbeProdNameEnter(Sender: TObject);
    procedure dbeProdNameExit(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure bbPostClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbLocalClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bbPriorClick(Sender: TObject);
    procedure bbNextClick(Sender: TObject);
    procedure dbeDateEnter(Sender: TObject);
    procedure dbeCardIDEnter(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    sOutDate,sOutID:string;
  end;

var
  frmProdOutCard: TfrmProdOutCard;

implementation

uses UnitDM, UnitQueryID, UnitProdVoucher, UnitProdStock, UnitProdInCard,
  UnitProdOutInCard;

{$R *.DFM}

procedure TfrmProdOutCard.dbeProdNameEnter(Sender: TObject);
begin
  frmCommQueryID.top:=frmProdOutCard.Height+frmProdOutCard.top;
  frmCommQueryID.left:=frmProdOutCard.left;

  TDBEdit(sender).color:=claqua;

  if dm.tabProdOutCard.state = dsinsert then
  begin
    case (sender as TDBEdit).tag of
    1:  // if the TDBEdit is dbeProdName
    begin
        frmCommQueryID.PageControl1.ActivePageIndex:=1;

        //frmCommQueryID.table2.open;
        frmCommQueryID.ActiveControl:=frmCommQueryID.dbgProdDictionary;


        if frmCommQueryID.showmodal = mrok then
        begin
          dbeProdID.SetFocus;
          dbeProdID.text:=frmCommQueryID.Query1.fieldbyname('ProdID').asstring;
//          dbeFigID.text:=dm.tabProdDictionary.fieldbyname('FigID').asstring;
        end; //if
        dbeNum.setfocus;
      end; // case 1
      2: // if the TDBEdit is dbeChecker
      begin
        frmCommQueryID.eStaffID.text:='';
        frmCommQueryID.PageControl1.ActivePageIndex:=0;

        //frmCommQueryID.table1.open;
        frmCommQueryID.ActiveControl:=frmCommQueryID.eStaffID;

        if frmCommQueryID.showmodal = mrok then
        begin
          DBEdit3.Text:=frmCommQueryID.Query3.fieldbyname('Staffid').asstring;
          dbeOuter.text:=frmCommQueryID.Query3.fieldbyname('Staffname').asstring;
        end; //if

        dbeManufacturer.setfocus;
      end; //case 2
      3:
       begin
        frmCommQueryID.PageControl1.ActivePageIndex:=2;
        frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;
        if frmCommQueryID.showmodal = mrok then
        begin
          dbeManufacturer.text:=frmCommQueryID.Query4.fieldbyname('Manufacturer').asstring;
          DBEdit1.text:=frmCommQueryID.Query4.fieldbyname('Manufacturerid').asstring;
        end; //if
        dbeNote.setfocus;
      end; //case 3
      4:  // if the TDBEdit is dbeNumber
      begin
        if dbeProdName.text <> '' then
        begin
          with dm.tabProdStock do
          begin
            filter:=format('ProdID = ''%S''',[dbeProdID.text]);
            filtered:=true;
            close;
            open;
            if fieldbyname('number').asinteger=0 then
            begin
            showmessage('该产品无库存!');
            exit;
            end;
          end; //with
           dbeNum.setfocus;
          //with frmProdOutInCard do
         // begin
            frmProdOutInCard.show;

         // end; //with

          //frmProdOutCard.SetFocus;
        end; //if
          if dbeProdName.text = '' then
        begin
          showmessage('请输入产品名称!');
          exit;
        end;
      end; //case 4
    end; // then Case statement is over

    //恢复过滤Table属性
    //tabProdDictionary tabStaff  tabManufacturer tabWorkShop
    dm.tabProdDictionary.filtered:=false;
    dm.tabProdDictionary.filter:='';

    dm.tabStaff.filtered:=false;
    dm.tabStaff.filter:='';

    dm.tabManufacturer.filtered:=false;
    dm.tabManufacturer.filter:='';

  end; //if


end;

procedure TfrmProdOutCard.dbeProdNameExit(Sender: TObject);
var
  fBox:real;
  sProdID:string;
  iNum:integer;
begin

  TDBEdit(sender).color:=clwindow;
  if dm.tabProdOutCard.State = dsinsert then
  begin
    case (sender as TDBEdit).tag of
      4:  // if the TDBEdit is dbeManufacturer
      begin
        if (dbeProdName.text = '') or (dbenum.text = '') then
          exit;
         sProdID:=dbeProdID.text;
  with dm.tabProdStock do
  begin
    open;
    setkey;
    if not findkey([sProdID]) then
    begin
      showmessage('该产品无库存!');
      exit;
    end
    else
      iNum := fieldbyname('Number').asinteger;
  end; //with

  if iNum < strtoint(dbeNum.text) then
  begin
    frmProdOutInCard.close;
    showmessage(dbeProdName.text+' 的库存量不够!');
    dbenum.SetFocus;
    dbenum.text :='0';
    exit;
  end;
        with dm.tabProdDictionary do
        begin
          open;
         setkey;
          if not findkey([dbeProdID.text]) then
          begin
            showmessage('该产品无库存!');

            exit;
          end
          else

          begin
            if fieldbyname('Contain').asinteger = 0 then exit; //跳出此事件处理过程

            fBox:=strtoint64(dbeNum.text) / fieldbyname('Contain').asinteger;
            fBox:=strtofloat(formatfloat('0.00',fBox));
          end; //if
        end; //with
        dbeBox.text := floattostr(fBox);

        frmProdOutInCard.close;
      end; //case 4
    end; //case of statement
  end; //if

end;

procedure TfrmProdOutCard.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    key:=#0;
    perform(WM_NEXTDLGCTL,0,0);
  end; //if

end;

procedure TfrmProdOutCard.bbPostClick(Sender: TObject);
var
  sProdID:string;
  iNum:integer;
begin
  bbPost.Cursor:=crAppStart;
    if (dm.zdyGetProdCheckDate >= strtodatetime(dbeDate.text)) then
    begin
      showmessage('您选择的结帐日期早于上次结帐日期!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetprodCheckDate));
      // showmodal;
       //frmProdMain.Visible:=true;
      exit;
    end; // if
//=================
// 检查栏目填写情况
//=================
  if (dbeProdName.text = '') or (dbeNum.text = '') or (DBEdit1.text='')then
  begin
    showmessage('请填写产品名称、数量栏目、客户单位!');
    exit;
  end; //if
{
//=========================
// 判断库存是否够用
//=========================
  sProdID:=dbeProdID.text;
  with dm.tabProdStock do
  begin
    open;
    setkey;
    if not findkey([sProdID]) then
    begin
      showmessage('not find key!');
      exit;
    end
    else
      iNum := fieldbyname('Number').asinteger;
  end; //with

  if iNum < strtofloat(dbeNum.text) then
  begin
    showmessage(dbeProdName.text+' 的库存量不够!');
    exit;
  end;
 }
//=======
// 提交
//=======

  if dm.tabProdOutCard.State = dsinsert then  //是添加记录 提交
  begin
    dm.tabProdOutCard.Post;
    //为下一次添加做准备
   // sCardID:=dm.zdyProdCardID(frmProdVoucher.dtpDate.date);
    //dm.tabProdOutCard.append;
  //  dbeDate.text:=datetostr(frmProdVoucher.dtpDate.date);
    //dbeCardID.text:=sCardID;
   // sOutDate:=dbeDate.text;
    //sOutID:=dbeCardID.text;
   // dbeProdName.SetFocus;
  end
  else if dm.tabProdOutCard.State = dsEdit then  //是修改记录 提交
  begin
    dm.tabProdOutCard.Post;
    frmProdOutCard.close;
  end
  else

    exit;

//===========================
// 更新仓库记录
//===========================
  frmProdStock.zdyCurStock(dm.zdyGetProdCheckDate);
// 先隐藏,再关闭
  frmProdOutCard.hide;
  bbPost.Cursor:=crDefault;
  showmessage('已提交,如还要出库,请按“填写出库单”按钮!');
  frmProdOutCard.close;
end;

procedure TfrmProdOutCard.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  dm.tabProdOutCard.cancel;
  frmProdOutInCard.close;  
end;

procedure TfrmProdOutCard.bbLocalClick(Sender: TObject);
begin
  dbeProdName.setfocus;
end;

procedure TfrmProdOutCard.FormCreate(Sender: TObject);
begin
  bbLocal.Height:=0;
  bbLocal.Width:=0;
end;

procedure TfrmProdOutCard.bbPriorClick(Sender: TObject);
begin
  if dm.tabProdOutCard.bof then
  begin
    messagedlg('已经到第一条记录!',mtinformation,[mbok],0);
    exit;
  end; //if

  dm.tabProdOutCard.Prior;

end;

procedure TfrmProdOutCard.bbNextClick(Sender: TObject);
begin
  if dm.tabProdOutCard.eof then
  begin
    messagedlg('已经到最后一条记录!',mtinformation,[mbok],0);
    exit;
  end; //if
  dm.tabProdOutCard.Next;

end;

procedure TfrmProdOutCard.dbeDateEnter(Sender: TObject);
begin
  dbeDate.text:=sOutDate;
end;

procedure TfrmProdOutCard.dbeCardIDEnter(Sender: TObject);
begin
  dbeCardID.text:=sOutID;
end;

procedure TfrmProdOutCard.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;

end.

⌨️ 快捷键说明

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