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

📄 uproducebill_e.pas

📁 进销存以及BOM管理,SQl Server数据库程序
💻 PAS
字号:
unit uproducebill_e;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ubaseinfo_e, DB, ADODB, StdCtrls, wwcheckbox, Mask, wwdbedit,
  ExtCtrls, wwdblook, wwdbdatetimepicker, DBClient, Buttons;

const
  WM_USER_CREATEDATA = WM_USER+1024;

type
  Tfrmproducebill_e = class(TfrmBaseinfo_e)
    Label4: TLabel;
    edit2: TwwDBEdit;
    Label5: TLabel;
    wwDBEdit2: TwwDBEdit;
    Label6: TLabel;
    edit3: TwwDBEdit;
    edit5: TwwDBEdit;
    Label7: TLabel;
    edit4: TwwDBEdit;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    edit1: TwwDBEdit;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    edit6: TwwDBEdit;
    Panel1: TPanel;
    wwCheckBox2: TwwCheckBox;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    wwDBDateTimePicker1: TwwDBDateTimePicker;
    wwDBDateTimePicker2: TwwDBDateTimePicker;
    wwDBDateTimePicker3: TwwDBDateTimePicker;
    wwDBLookupCombo1: TwwDBLookupCombo;
    wwDBLookupCombo2: TwwDBLookupCombo;
    wwDBDateTimePicker4: TwwDBDateTimePicker;
    wwDBLookupCombo3: TwwDBLookupCombo;
    CDSmaterial: TClientDataSet;
    CDSproduce: TClientDataSet;
    Quser: TADOQuery;
    Quserfname: TStringField;
    CDSproducestate: TStringField;
    CDSmaterialstate: TStringField;
    SpeedButton1: TSpeedButton;
    spGetOutNumber: TADOStoredProc;
    Qitem: TADOQuery;
    Qitemfcode: TWideStringField;
    Qitemfname: TWideStringField;
    Qitemfdesc: TWideStringField;
    Qitemfcolor: TWideStringField;
    Qitemfunit: TWideStringField;
    Qitemfid: TIntegerField;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    procedure createdata(var msg:Tmessage);message WM_USER_CREATEDATA;
    function Getoutnumber(iBilltypeid:integer):String;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmproducebill_e: Tfrmproducebill_e;

implementation

uses uproducebill, Data, Global, uProductFilter;

{$R *.dfm}

procedure Tfrmproducebill_e.createdata(var msg: Tmessage);
begin
  with Quser do
    begin
    close;
    sql.Clear;
    sql.Add('Select fname from tuser order by fname');
    open;
    end;

  with CDSmaterial do
    begin
      close;
      fielddefs.Add('State',ftString,18);
      Createdataset;
      AppendRecord(['准备开始']);
      AppendRecord(['已分解物料']);
      AppendRecord(['已申请采购']);
      open;
    end;
  with CDSproduce do
    begin
      close;
      fielddefs.Add('State',ftString,18);
      Createdataset;
      AppendRecord(['准备开始']);
      AppendRecord(['已制定生产计划']);
      AppendRecord(['已制定资源计划']);
      open;
    end;
end;

procedure Tfrmproducebill_e.FormCreate(Sender: TObject);
begin
  inherited;
  MainTable:='Tproducebill';
end;

procedure Tfrmproducebill_e.FormShow(Sender: TObject);
begin
  inherited;
  postmessage(handle,WM_USER_CREATEDATA,0,0);
  application.ProcessMessages; 
end;

procedure Tfrmproducebill_e.SpeedButton1Click(Sender: TObject);
begin
  inherited;
iProductID:=0;
if not assigned(frmProductFilter) then
  frmProductFilter:=TfrmProductFilter.Create(application);
  frmProductFilter.ShowModal;

if iproductID>0 then
  begin
    with Qitem do
      begin
        close;
        sql.Clear;
        sql.Add('select fid,fcode,fname,fdesc,fcolor,funit from titem where fid='+vartosql(iproductID));
        open;
      end;

    if Qitem.RecordCount > 0 then
      begin
        Dataset.FieldByName('fitemcode').AsString:=Qitem.fieldbyname('fcode').AsString;
        Dataset.FieldByName('fitemname').AsString:=Qitem.fieldbyname('fname').AsString;
        Dataset.FieldByName('fitemdesc').AsString:=Qitem.fieldbyname('fdesc').AsString;
        Dataset.FieldByName('fitemcolor').AsString:=Qitem.fieldbyname('fcolor').AsString;
        Dataset.FieldByName('fitemunit').AsString:=Qitem.fieldbyname('funit').AsString;
        Dataset.FieldByName('fitemid').AsInteger:=Qitem.fieldbyname('fid').AsInteger;
      end;
  end;
  iProductID:=0;
end;

function Tfrmproducebill_e.Getoutnumber(iBilltypeid: integer): String;
begin
    //取外部单号NO
    if ibilltypeid=0 then Result:='';
    Try
    With spGetOutNumber do
      begin
      parameters.ParamValues['@BillType']:=iBillTypeID;
      Execproc;
      end;
    except
    on E:Exception do
      begin
      Result:='';
      MessageDlg('取单据号失败!'+#13#10+E.Message,mterror,[mbOk],0);
      Abort;
      end;
    end;
    Result:=Trim(spGetOutNumber.Parameters.ParamValues['@OutNumber']);
end;

procedure Tfrmproducebill_e.Button1Click(Sender: TObject);
begin
  if iBillTypeid>0 then
    begin
      if Dataset.State=dsInsert then
          Dataset.FieldByName('fname').AsString:=Getoutnumber(iBilltypeid);
    end;
  if wwDBEdit2.Text='' then
    begin
      messagedlg('生产数量不能为空 ! ',mtError,[mbok],0);
      Exit;
    end;
  inherited;

end;

procedure Tfrmproducebill_e.Button3Click(Sender: TObject);
begin
  if (iBillTypeid>0) and (not isAddEdit) then
    begin
      Dataset.FieldByName('fname').AsString:=Getoutnumber(iBilltypeid);
    end;

  if wwDBEdit2.Text='' then
    begin
      messagedlg('生产数量不能为空 ! ',mtError,[mbok],0);
      Exit;
    end;
        
  inherited;

end;

end.

⌨️ 快捷键说明

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