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

📄 unitprodstock.~pas

📁 此代码为企业原料管理代码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit UnitProdStock;

interface

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

type
  TfrmProdStock = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    dbgProdStock: TDBGrid;
    Panel1: TPanel;
    Query1: TQuery;
    Table1: TTable;
    TabSheet2: TTabSheet;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Query2: TQuery;
    Label1: TLabel;
    BitBtn4: TBitBtn;
    rgProdDictionary: TRadioGroup;
    eProdStockFind: TEdit;
    BitBtn1: TBitBtn;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Edit1: TEdit;
    Table2: TTable;
    Query3: TQuery;
    Button1: TButton;
    Button2: TButton;
    TabSheet3: TTabSheet;
    DBGrid2: TDBGrid;
    Query4: TQuery;
    DataSource2: TDataSource;
    Table3: TTable;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Button3: TButton;
    Button4: TButton;
    BitBtn5: TBitBtn;
    Button5: TButton;
    Panel2: TPanel;
    Button6: TButton;
    Button7: TButton;
    Edit2: TEdit;
    DBEdit2: TDBEdit;
    DateTimePicker3: TDateTimePicker;
    Edit3: TEdit;
    Label9: TLabel;
    Button8: TButton;
    Query5: TQuery;
    Label10: TLabel;
    DateTimePicker4: TDateTimePicker;
    DateTimePicker5: TDateTimePicker;
    Label11: TLabel;
    Label12: TLabel;
    procedure BitBtn4Click(Sender: TObject);
    //procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure eProdStockFindChange(Sender: TObject);
    procedure rgProdDictionaryClick(Sender: TObject);
 //   procedure DBEdit1Enter(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
    //procedure DBEdit2Enter(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure DBEdit3Enter(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn5Click(Sender: TObject);
   // procedure Edit2Enter(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure DBEdit2Click(Sender: TObject);
    procedure Edit3Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure TabSheet3Enter(Sender: TObject);
    procedure DBEdit4Enter(Sender: TObject);
    procedure DBGrid2CellClick(Column: TColumn);
    procedure Table3FilterRecord(DataSet: TDataSet; var Accept: Boolean);
    procedure TabSheet2Show(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
    procedure zdyCurStock(dCheckDate:TDate); //  计算当前各种物品的库存

  end;

var
  frmProdStock: TfrmProdStock;
  pt, j:integer;
  jie:real;
  riqiri:Tdatetime ;
  st:string;
implementation

uses UnitDM, UnitProdStockPrt, UnitQueryID, UnitProdPrtkehu, Unitmonthsum,
  UnitProdMain, UnitProdVoucher;

{$R *.DFM}

procedure TfrmProdStock.zdyCurStock(dCheckDate:TDate); //  计算当前各种物品的库存
var
  sCardIDFrom,sProdID:string;
  iOriginNum,iThisIn,iThisOut,iCurrentNum:integer;
begin
//==============
// 清空原表
//==============
  with dm.qryExe do
  begin
    close;
    sql.clear;
    sql.add('Delete from ProdStock ');
    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;

  sCardIDFrom:=formatdatetime('yymmdd',dCheckDate+1)+'000';

  with dm.tabProdIDHistory do
  begin
    close;
    open;
    first;
    while not eof do
    begin
      sProdID:=fieldbyname('ProdID').asstring;
       if sProdID='' then
        begin
         dm.tabProdIDHistory.Delete;
         next;
        end;
    //得到上月盘存
      iOriginNum:=dm.zdyGetProdCheckNum(dCheckDate,sProdID);

    //得到本月入库
      with dm.qryExe do
      begin
        close;
        sql.clear;
        sql.add('select sum(Number) from ProdInCard  ');
        sql.add('where CardID >= :StartID ');
        sql.add('and ProdID = :ProdID   ');
        parambyname('StartID').asstring:=sCardIDFrom;
        parambyname('ProdID').asstring:=sProdID;
        open;
        iThisIn:=fields[0].asinteger;
      end; //with

    //得到本月出库
      with dm.qryExe do
      begin
        close;
        sql.clear;
        sql.add('select sum(Number) from ProdOutCard  ');
        sql.add('where CardID >= :StartID ');
        sql.add('and ProdID = :ProdID   ');
        parambyname('StartID').asstring:=sCardIDFrom;
        parambyname('ProdID').asstring:=sProdID;
        open;
        iThisOut:=fields[0].asinteger;
      end; //with

      iCurrentNum:=iOriginNum + iThisIn - iThisOut;

      with dm.tabProdStock do
      begin
        open;
        insert;
        fieldbyname('ProdID').asstring:=sProdID;
        fieldbyname('Number').asinteger:=iCurrentNum;
        post;

      end; //with
      next;
    end; //while
   end; //with
  end;


procedure TfrmProdStock.BitBtn4Click(Sender: TObject);
begin
  //if frmProdVoucher.kuw<>1 then
 // begin
 // dm.dsProdStock.dataset:=dm.tabProdStock;
  //dm.qryExe.active:=false;
 // dm.tabProdStock.active:=false;


 // close;
 // end
 // else
 // begin
  //frmProdVoucher.kuw:=0;
  close;
 // end;
end;
{
procedure TfrmProdStock.BitBtn8Click(Sender: TObject);
var
  sProdID:string;
begin
  with dm.qryExe do
  begin
    close;
    sql.Clear;
    if rgProdDictionary.ItemIndex = 0 then
    begin
      sql.add('select * from ProdDictionary where FigID = :FigID');
      parambyname('FigID').asstring:=eProdStockFind.text;
    end
    else if rgProdDictionary.ItemIndex = 1 then
    begin
      sql.add('select * from ProdDictionary where ProdName = :ProdName');
      parambyname('ProdName').asstring:=eProdStockFind.text;
    end
    else
      exit;
    open;
    if recordcount = 0 then
    begin
      showmessage('没找到该产品!');
      exit;
    end;
    sProdID:=fieldbyname('ProdID').asstring;
  end; //with

    with dm.tabProdStock do
    begin
      setkey;
      findkey([sProdID]);
    end; //with

  dbgProdStock.setfocus;


end;
}
procedure TfrmProdStock.BitBtn1Click(Sender: TObject);
begin
  with frmProdStockPrt do
  begin
    QRLDate.caption:=datetostr(date);
    QuickRep1.preview;
  end; //with

end;

procedure TfrmProdStock.eProdStockFindChange(Sender: TObject);
begin
   with dm.qryExe do
  begin
    close;
    sql.Clear;
    if rgProdDictionary.ItemIndex = 0 then
    begin
     sql.add('select * from ProdDictionary where  FigID like :mi');
     paramByName('mi').asstring:=eProdStockFind.text+'%';
    end
    else if rgProdDictionary.ItemIndex = 1 then
    begin
      sql.add('select * from ProdDictionary where ProdName like :mi');
      parambyname('mi').asstring:=eProdStockFind.text+'%';
    end
    else
       begin
      eProdStockFind.text:='';
      exit;
      end;
    open;
    if recordcount = 0 then
    begin
      eProdStockFind.text:='';
      showmessage('没找到该产品!');
      exit;
    end;
   // sProdID:=fieldbyname('ProdID').asstring;
  end; //with
   with table1 do begin
   open;
   first;
   while not eof do
   delete;
   next;
  end;//with
  //=========抄写到table1========
  dm.qryExe.First;
while  not dm.qryExe.eof do
 begin
  table1.append;
  table1.FieldByName('FigID').asstring:=dm.qryExe.fieldbyname('FigID').asstring;
  table1.FieldByName('ProdName').asstring:=dm.qryExe.fieldbyname('ProdName').asstring;
  table1.FieldByName('prodid').asstring:=dm.qryExe.fieldbyname('prodid').asstring;
   with query1 do
  begin
    close;
    sql.Clear;
    sql.add('select * from ProdStock where prodid =:mi');
     paramByName('mi').asstring:=dm.qryExe.fieldbyname('prodid').asstring;
     open;
    end;
  table1.FieldByName('Number').asinteger:=query1.fieldbyname('Number').asinteger;
  table1.post;
  dm.qryExe.next;
 end;//while
 //==========从ProdStock2中去掉数量为0的记录========
     with dm.qryExe do
  begin
    close;
    sql.clear;
    sql.add('Delete from ProdStock2 where Number=0 ');
    execsql;
  end; //with
     dm.dsProdStock.dataset:=table1;
end;

procedure TfrmProdStock.rgProdDictionaryClick(Sender: TObject);
begin
   if rgProdDictionary.ItemIndex = 0 then
   Label1.caption:='请输入图号:'
   else  Label1.caption:='请输入产品名称:';
end;
{
procedure TfrmProdStock.DBEdit1Enter(Sender: TObject);
begin
  frmCommQueryID.top:=200;//DBEdit1.Height+DBEdit1.top;
  frmCommQueryID.left:=200;//DBEdit1.left;
  //Table2.Close;
  DBEdit1.color:=claqua;

        DBEdit1.setfocus;
        frmCommQueryID.PageControl1.ActivePageIndex:=2;
        dm.tabManufacturer.filtered:=false;
        dm.tabManufacturer.open;
        frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;

        if frmCommQueryID.showmodal = mrok then
        begin
          Edit1.SetFocus;
          Edit1.text:=dm.tabManufacturer.fieldbyname('ManufacturerID').asstring;
           with dm.tabManufacturer do
          begin
            filter:=format('ManufacturerID = ''%S''',[Edit1.text]);
            filtered:=true;
            close;
            open;
          end; //with
           DBEdit1.setfocus;
          DBEdit1.text:=dm.tabManufacturer.fieldbyname('Manufacturer').asstring;
          dm.tabManufacturer.filtered:=false;
        end; //if

          dm.tabManufacturer.close;
         DBGrid1.setfocus;
      showmessage(Edit1.text);
end;
}
procedure TfrmProdStock.BitBtn3Click(Sender: TObject);
var
 nam,fig,vnote,bat,vout,id:string;
 vdate:Tdate;
 num:integer;
 jia,vbox:real;
begin
  if Edit2.text='' then
  begin
  showmessage('请输入客户名称!');
  exit;
  end;
  with Query3 do //清客户表
  begin
    close;
    sql.clear;
    sql.add('Delete from kehu ');
    execsql;
  end; //with
  // showmessage(Edit1.text);
   with Query2 do
  begin
    close;
    sql.Clear;
    sql.Add('select * from ProdOutCard');
    sql.Add('where OutDate between :v_from and :v_to and ManufacturerID=:khID ');
    sql.Add('order by OutDate desc');
    parambyname('v_from').asdatetime:=DateTimePicker1.date;
    parambyname('v_to').asdatetime:=DateTimePicker2.date;
    parambyname('khID').asstring:=Edit1.text;
    open;
     if recordcount = 0 then
     begin
      showmessage('记录为零!');
      table2.Close;
      exit;
     end;
    first;
    while  not eof do
    begin
    id:=fieldbyname('ProdID').asstring;
    vdate:=fieldbyname('OutDate').asdatetime;
    vnote:=fieldbyname('Note').asstring;
    bat:=fieldbyname('ProcBatID').asstring;
    num:=fieldbyname('Number').asinteger;
    vbox:=fieldbyname('Box').asfloat;
    vout:=fieldbyname('OuterID').asstring;
    Query3.close;
    Query3.sql.Clear;
    Query3.sql.Add('select * from ProdDictionary');
    Query3.sql.Add('where ProdID=:pID ');
    Query3.parambyname('pID').asstring:=id;
    Query3.open;
    nam:=Query3.fieldbyname('ProdName').asstring;
    fig:=Query3.fieldbyname('FigID').asstring;
    jia:=Query3.fieldbyname('SellPrice').asfloat;
    Query3.close;
    Query3.sql.Clear;
    Query3.sql.Add('select * from CommStaff');
    Query3.sql.Add('where StaffID=:pID ');
    Query3.parambyname('pID').asstring:=vout;
    Query3.open;
    vout:=Query3.fieldbyname('StaffName').asstring;
    Table2.open;
    Table2. insert;
    Table2.fieldbyname('ProdFig').asstring:=fig;
    Table2.fieldbyname('ProdName').asstring:=nam;
    Table2.fieldbyname('OutDate').asDateTime:=vdate;
    Table2.fieldbyname('Number').asinteger:=num;
    Table2.fieldbyname('Box').asfloat:=vbox;
    Table2.fieldbyname('ProcBat').asstring:=bat;
    Table2.fieldbyname('Note').asstring:=vnote;
    Table2.fieldbyname('Outer').asstring:=vout;
    Table2.fieldbyname('danjia').asfloat:=jia;
    Table2.fieldbyname('jine').asfloat:=strtofloat(formatfloat('0.00',num*jia));
    Table2.Post;
    next;
    end;
  end; //with

end;

procedure TfrmProdStock.FormShow(Sender: TObject);
begin
   st:='';
   Button4.Enabled:=false;
  table3.Open;
  Edit2.text:='';
 // DBEdit1.color:=clwindow;
  DateTimePicker1.date:=date-30;
  DateTimePicker2.date:=date;
  DateTimePicker3.date:=date;
end;

procedure TfrmProdStock.BitBtn2Click(Sender: TObject);
begin
  //frmProdprtkehu.Table1.close;
 // dm.tabManufacturer.close;
 // DBEdit1.color:=clwindow;
  Edit2.text:='';
  // Table2.close;
  // frmProdMain.show;
   close;
end;

procedure TfrmProdStock.Button1Click(Sender: TObject);
begin

⌨️ 快捷键说明

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