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

📄 unitprodwastebook.~pas

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

interface

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

type
  TfrmProdWasteBook = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    bbShow: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Splitter1: TSplitter;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Panel1: TPanel;
    DBText1: TDBText;
    DBText2: TDBText;
    Panel2: TPanel;
    DBText3: TDBText;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    lCheckDate: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure bbShowClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure zdyWasteBook(); //过程声明  建立流水帐

  end;

var
  frmProdWasteBook: TfrmProdWasteBook;

implementation

uses UnitDM, UnitProdWasteBookPrt;

{$R *.DFM}

procedure TfrmProdWasteBook.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  dm.tabProdWasteBook.close;
  dm.tabProdIDHistory.close;
end;

procedure TfrmProdWasteBook.zdyWasteBook();
var
  sStartID:string;
  sCardID,sYear,sMonth,sDay,sProdName,sProdID,sProcBatID,sOutCardNum:string;
  iNum,iCheckNum,iWasteBookNum,iContain,iWasteBookBox,iBoxLeft,iSerialNum:integer;
  dFrom:Tdate;
  fOutBox:real;
  bInOut:boolean;
begin

  dFrom:=dm.zdyGetProdCheckDate ;
  //showmessage(datetostr(dm.zdyGetProdCheckDate));
  lCheckDate.caption:=formatdatetime('yyyy"年"mm"月"dd"日" dddd',dFrom);
  dFrom:=dFrom + 1;
  sStartID := formatdatetime('yymmdd',dFrom)+'000';

//=======================================
//清空ProdWasteBook表  就是成品仓库台帐
//=======================================
  with dm.qryExe do
  begin
    close;
    sql.clear;
    sql.add('delete from ProdWasteBook ');
    execsql;
  end; //with

    with dm.tabProdIDHistory do
  begin
    open;
    first;
    while not eof do
    begin
      sProdID:=fieldbyname('ProdID').asstring;
      if sProdID='' then
       dm.tabProdIDHistory.Delete; //prodID为空的去掉
        next;
      end;
    end;
//==============
// 开始写台帐
//==============
  with dm.tabProdIDHistory do
  begin
    open;
    first;
    while not eof do
    begin
      sProdID:=fieldbyname('ProdID').asstring;
      if sProdID='' then
      begin
       dm.tabProdIDHistory.Delete; //prodID为空的去掉
       next;
       end; //xia yi shang lai
       sProdID:=fieldbyname('ProdID').asstring;
      // end; //yi dao shang mian
      //先写盘存
     iCheckNum:=dm.zdyGetProdCheckNum(dm.zdyGetProdCheckDate,sProdID);
      with dm.tabProdWasteBook do
      begin
        open;
        insert;
        fieldbyname('CardID').asstring:=sStartID;
        fieldbyname('InOutFlag').asboolean:=true;
        fieldbyname('Year').asstring:=sStartID[1]+sStartID[2];
        fieldbyname('Month').asstring:=sStartID[3]+sStartID[4];
        fieldbyname('Day').asstring:=sStartID[5]+sStartID[6];
        fieldbyname('WasteBookNum').asinteger:=iCheckNum;
        fieldbyname('ProdID').asstring:=sProdID;
        fieldbyname('Note').asstring:='上月盘存';
        fieldbyname('SerialNum').asinteger:=1;
        post;
      end; //with

      //读取记录  从ProdInCard 入库单
      with dm.qryExe do
      begin
        close;
        sql.Clear;
        sql.add('select * from ProdInCard ');
        sql.add('where CardID >= :StartID and ProdID = :ProdID ');
        parambyname('StartID').asstring:=sStartID;
        parambyname('ProdID').asstring:=sProdID;
        open;
        first;
        while not eof do
        begin
          sCardID:=fieldbyname('CardID').asstring;
          sYear:=sCardID[1]+sCardID[2];
          sMonth:=sCardID[3]+sCardID[4];
          sDay:=sCardID[5]+sCardID[6];
          iNum:=fieldbyname('Number').asinteger;
          sProcBatID:=fieldbyname('ProcBatID').asstring;
          with dm.tabProdWasteBook do
          begin
            open;
            insert;
            fieldbyname('CardID').asstring:=sCardID;
            fieldbyname('Year').asstring:=sYear;
            fieldbyname('Month').asstring:=sMonth;
            fieldbyname('Day').asstring:=sDay;
            fieldbyname('ProdID').asstring:=sProdID;
            fieldbyname('InNum').asinteger:=iNum;
            fieldbyname('InOutFlag').asboolean:=true;
            fieldbyname('ProcBatID').asstring:=sProcBatID;
            post;
          end; //with dm.tabProdWasteBook
        next;
        end; //while
        filter:='';
        filtered:=false;
        close;
      end; //with dm.tabProdIncard

      //读取记录  从ProdOutCard 出库单
      with dm.qryExe do
      begin
        close;
        sql.Clear;                                         
        sql.add('select * from ProdOutCard ');
        sql.add('where CardID >= :StartID and ProdID = :ProdID ');
        parambyname('StartID').asstring:=sStartID;
        parambyname('ProdID').asstring:=sProdID;
        open;
        first;
        while not eof do
        begin
          sCardID:=fieldbyname('CardID').asstring;
          sYear:=sCardID[1]+sCardID[2];
          sMonth:=sCardID[3]+sCardID[4];
          sDay:=sCardID[5]+sCardID[6];
          iNum:=fieldbyname('Number').asinteger;
          sProcBatID:=fieldbyname('ProcBatID').asstring;
          sProcBatID:=fieldbyname('ProcBatID').asstring;
          fOutBox:=fieldbyname('Box').asfloat;
          with dm.tabProdWasteBook do
          begin
            open;
            insert;
            fieldbyname('CardID').asstring:=sCardID;
            fieldbyname('Year').asstring:=sYear;
            fieldbyname('Month').asstring:=sMonth;
            fieldbyname('Day').asstring:=sDay;
            fieldbyname('ProdID').asstring:=sProdID;
            fieldbyname('OutNum').asinteger:=iNum;
            fieldbyname('InOutFlag').asboolean:=false;
            fieldbyname('ProcBatID').asstring:=sProcBatID;
            fieldbyname('OutBox').asfloat:=fOutBox;
            post;
          end; //with dm.tabProdWasteBook
        next;
        end; //while
        filter:='';
        filtered:=false;
        close;
      end; //with dm.tabProdIncard
      next;
    end; //while
  end; //if

//=======================================
// 写各种产品库存,库存箱数,余数 ,序号
//=======================================
  with dm.tabProdIDHistory do
  begin
    if not active then open;
    first;
    while not eof do
    begin
      iSerialNum:=0; //序号
      sProdID:=fieldbyname('ProdID').asstring;
      //依次填写流水帐库存
      //iWasteBookNum:=iCheckNum;
        //iWasteBookNum:=fieldbyname('WasteBookNum').asinteger;
      with dm.tabProdWasteBook do
      begin
        if active then close;
        filter:=format('ProdID = ''%S''',[sProdID]);
        if not filtered then filtered:=true;
        if not active then open;
        first;
        iWasteBookNum:=fieldbyname('WasteBookNum').asinteger;
       // next; //跳过一条盘存
        while not eof do
        begin
          iSerialNum:=iSerialNum+1;//序号加1
          if fieldbyname('InOutFlag').asboolean then //是入库
          begin
            bInOut:=true;
            iNum:=fieldbyname('InNum').asinteger;
            iWasteBookNum:=iWasteBookNum + iNum;
          end
          else
          begin
            bInOut:=false;
            iNum:=fieldbyname('OutNum').asinteger;
            iWasteBookNum:=iWasteBookNum - iNum;
          end; //if

          sProcBatID:=fieldbyname('ProcBatID').asstring;
          with dm.tabProdDictionary do
          begin
            if not active then open;
            setkey;
            if not findkey([sProdID]) then
            begin
              showmessage('not find key!');
              exit;
            end
            else
              iContain:=fieldbyname('Contain').asinteger;
          end;//with

          if iContain <> 0 then
          begin
            iWasteBookBox:= (iWasteBookNum div iContain) ;
            iBoxLeft := abs(iWasteBookNum - iContain * iWasteBookBox);
          end; 

          edit;
          if bInOut then
            fieldbyname('BoxBat').asstring:=sProcBatID+'-0'+inttostr(iWasteBookBox);

          fieldbyname('SerialNum').asinteger:=iSerialNum;
          fieldbyname('WasteBookNum').asinteger:=iWasteBookNum;
          if iContain <> 0 then
          begin
            fieldbyname('WasteBookBox').asinteger:=iWasteBookBox;
            fieldbyname('BoxLeft').asinteger:=iBoxLeft;
          end;
          post;
          next;
        end;  //while
      end; //with
      next;
    end; //while
  end; //if



//===============
// 刷新表格
//===============
  dm.tabProdIDHistory.first;
  sProdID:=dm.tabProdIDHistory.fieldbyname('ProdID').asstring;
  with dm.tabProdWasteBook do
  begin
    if active then close;
    filter:=format('ProdID = ''%S''',[sProdID]);
    if not filtered then filtered := true;
    if not active then open;
  end; //with

end;


procedure TfrmProdWasteBook.BitBtn3Click(Sender: TObject);
begin
  close;
end;

procedure TfrmProdWasteBook.FormCreate(Sender: TObject);
begin
  tabsheet1.TabVisible:=false;
  pagecontrol1.ActivePageIndex:=0;
end;

procedure TfrmProdWasteBook.BitBtn2Click(Sender: TObject);
begin
  with frmProdWasteBookPrt do
  begin
    QRLDate.caption:=datetostr(date);
    QRLProdName.caption:=DM.tabProdIDHistory.fieldbyname('ProdName').asstring;
    QRLFigID.caption:=DM.tabProdIDHistory.fieldbyname('FigID').asstring;
    QuickRep1.Preview;
  end; //with
end;

procedure TfrmProdWasteBook.BitBtn1Click(Sender: TObject);
begin
  with frmProdWasteBookPrt do
  begin
    QRLDate.caption:=datetostr(date);
    QRLProdName.caption:=DM.tabProdIDHistory.fieldbyname('ProdName').asstring;
    QRLFigID.caption:=DM.tabProdIDHistory.fieldbyname('FigID').asstring;
    QuickRep1.print;
  end; //with

end;

procedure TfrmProdWasteBook.bbShowClick(Sender: TObject);
var
  sProdID:string;
begin
  sProdID:=dm.tabProdIDHistory.fieldbyname('ProdID').asstring;
  with dm.tabProdWasteBook do
  begin
    if active then close;
    filter:=format('ProdID = ''%S''',[sProdID]);
    if not filtered then filtered := true;
    if not active then open;
  end; //with

end;

end.

⌨️ 快捷键说明

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