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

📄 uthgl.pas

📁 工廠採購管理系統
💻 PAS
字号:
unit uthgl;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, RzButton, StdCtrls, DBCtrls, Mask, ExtCtrls, Grids,
  DBGridEh, RzTabs, DB, ADODB, FR_DSet, FR_DBSet, FR_Class, ComCtrls,
  RzDTP, RzDBDTP,GridsEh, Menus;

type
  Tfrmthgl = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn3: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    RzBitBtn6: TRzBitBtn;
    RzBitBtn7: TRzBitBtn;
    RzBitBtn8: TRzBitBtn;
    RzBitBtn9: TRzBitBtn;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    DBEdit1: TDBEdit;
    Label7: TLabel;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBMemo1: TDBMemo;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    DBGridEh1: TDBGridEh;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery2: TADOQuery;
    ADOQuery3: TADOQuery;
    GroupBox1: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    Label14: TLabel;
    DBEdit13: TDBEdit;
    RzBitBtn4: TRzBitBtn;
    RzBitBtn12: TRzBitBtn;
    edit1: TEdit;
    edit2: TEdit;
    ADOQuery4: TADOQuery;
    DataSource3: TDataSource;
    RzToolbarButton2: TRzToolbarButton;
    RzToolbarButton3: TRzToolbarButton;
    Label17: TLabel;
    Label19: TLabel;
    Label21: TLabel;
    DBComboBox2: TDBComboBox;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    ADOQuery1: TADOQuery;
    ADOQuery1DSDesigner: TStringField;
    ADOQuery1DSDesigner2: TStringField;
    ADOQuery1DSDesigner3: TStringField;
    ADOQuery1DSDesigner4: TStringField;
    ADOQuery1DSDesigner5: TStringField;
    ADOQuery1DSDesigner6: TFloatField;
    ADOQuery1DSDesigner7: TBCDField;
    ADOQuery1DSDesigner8: TFloatField;
    ADOQuery1DSDesigner9: TStringField;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    dtp2: TRzDateTimePicker;
    dtp3: TRzDateTimePicker;
    Label16: TLabel;
    DBEdit11: TDBEdit;
    RzToolbarButton1: TRzToolbarButton;
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure RzBitBtn7Click(Sender: TObject);
    procedure RzBitBtn8Click(Sender: TObject);
    procedure RzBitBtn9Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBEdit4Enter(Sender: TObject);
    procedure TabSheet2Enter(Sender: TObject);
    procedure edit1KeyPress(Sender: TObject; var Key: Char);
    procedure edit2KeyPress(Sender: TObject; var Key: Char);
    procedure RzBitBtn4Click(Sender: TObject);
    procedure RzBitBtn6Click(Sender: TObject);
    procedure RzBitBtn12Click(Sender: TObject);
    procedure RzMenuToolbarButton1Click(Sender: TObject);
    procedure DBEdit1Change(Sender: TObject);
    procedure DBGridEh1DblClick(Sender: TObject);
    procedure DBEdit3Enter(Sender: TObject);
    procedure DBEdit3Exit(Sender: TObject);
    procedure RzToolbarButton2Click(Sender: TObject);
    procedure RzToolbarButton3Click(Sender: TObject);
    procedure RzBitBtn5Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure csh();
    procedure dtp2Exit(Sender: TObject);
    procedure dtp3Exit(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure RzToolbarButton1Click(Sender: TObject);
    procedure DBGridEh1TitleClick(Column: TColumnEh);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmthgl: Tfrmthgl;

implementation
uses uconst,ufunction,udm1,ucx,ugyslb,ushdh_lb,uwllb,ushd_wllb,unit3,uemplyer,
  uemplyer_lb;
{$R *.dfm}
procedure tfrmthgl.csh();
begin
strsql:='select thdh as 退货单号,ddhm as 订单号码,gysdm as 供应商代码,shdh as 收货单号,'+
        'djr as 操作,srrq as 日期,bb as 币别,qc as 质检,node as 备注 from thgl_main where '+
        'srrq>=:rq1 and srrq<=:rq2 order by thdh desc';
if adoquery2.Active then adoquery2.Close;
adoquery2.sql.Clear;
adoquery2.SQL.Add(strsql);
adoquery2.Parameters.ParamByName('rq1').Value:=dtp2.Date;
adoquery2.Parameters.ParamByName('rq2').Value:=dtp3.Date;
adoquery2.Open;
end;
procedure Tfrmthgl.FormCreate(Sender: TObject);
begin
ddhm:='';
adoquery1.Connection:=dm1.ADOConnection1;
adoquery2.Connection:=dm1.ADOConnection1;
adoquery3.Connection:=dm1.ADOConnection1;
adoquery4.Connection:=dm1.ADOConnection1;
strsql:='select * from bb_class order by id asc';
adoexect(adoquery3,strsql);
if not(adoquery3.Recordset.EOF and adoquery3.Recordset.BOF) then
   begin
        dbcombobox2.Items.Clear;
        adoquery3.First;
        while not adoquery3.Eof do
        begin
        dbcombobox2.Items.Add(trim(adoquery3.fieldbyname('classname').AsString));
        adoquery3.Next;
        end;
   end;
dtp2.Date:=date-30;
dtp3.Date:=date;
strsql:='select * from view_thgl where 退货单号='+''''+trim(dbedit1.Text)+'''';
adoexect(adoquery1,strsql);
csh;
end;

procedure Tfrmthgl.RzBitBtn1Click(Sender: TObject);

begin
if not qxjc(userid,'thd_add') then exit;
adoquery2.Append;
RzBitBtn1.Enabled:=false;
RzBitBtn2.Enabled:=false;
RzBitBtn3.Enabled:=true;
dbedit5.Text:=username;
dbedit11.Text:=datetostr(date);
end;

procedure Tfrmthgl.RzBitBtn2Click(Sender: TObject);
begin
if adoquery2.Recordset.EOF and adoquery2.Recordset.BOF then exit;
if not qxjc(userid,'thd_edit') and (username<>trim(dbedit4.Text)) then exit;
RzBitBtn1.Enabled:=false;
RzBitBtn2.Enabled:=false;
RzBitBtn3.Enabled:=true;
adoquery2.edit;
shdh:=trim(dbedit4.Text);
dbedit5.Text:=username;
dbedit11.Text:=datetostr(date);
end;

procedure Tfrmthgl.RzBitBtn3Click(Sender: TObject);
var
qz:string;
begin
if trim(dbedit4.Text)='' then
   begin
        showmessage('没有选择收货单号');
        dbedit4.SetFocus;
        exit;
   end;
if trim(dbedit3.Text)='' then
   begin
        showmessage('没有选择供应商');
        dbedit3.SetFocus;
        exit;
   end;
if trim(dbedit2.Text)='' then
   begin
        showmessage('订单号码不能为空');
        dbedit2.SetFocus;
        exit;
   end;
strsql:='select * from thgl_main where shdh='+''''+trim(dbedit4.text)+'''';
adoexect(adoquery3,strsql);
if not(adoquery3.Recordset.eof and adoquery3.Recordset.bof) then
   begin
   showmessage('此收货单已经退料,如数量有增,可直接修改推货单'+trim(adoquery3.fieldbyname('thdh').AsString));
   exit;
   end;
qz:='THDH'+formatdatetime('yy',now)+
formatdatetime('mm',now)+formatdatetime('dd',date);
strsql:='select * from thgl_main where thdh like'+''''+qz+'%'+''''+'order by thdh asc';
adoexect(adoquery3,strsql);
dbedit1.Text:=creatdh(adoquery3,11,qz);
RzBitBtn1.Enabled:=true;
RzBitBtn2.Enabled:=true;
RzBitBtn3.Enabled:=false;
if (adoquery2.State in [dsedit]) and (shdh<>trim(dbedit4.Text)) then
   begin
   strsql:='exec p_thd_del '+trim(dbedit1.Text);
   adodel(adoquery3,strsql);
   end;
try
    strsql:='exec p_insertthd '+''''+trim(dbedit1.Text)+''''+','+''''+trim(dbedit4.Text)+'''';
    adodel(adoquery3,strsql);                                                    //调用存储过程p_insertthd来自动添加明细数据
    adoquery2.post;
except
    if adoquery1.State in[dsinsert] then
    begin
    strsql:='delete thgl_detail from where thdh='+''''+trim(dbedit1.Text)+'''';      //如果有异常则应清除明细表中的数据
    adodel(adoquery3,strsql);
    adoquery3.Close;
    adoquery1.Close;
    adoquery1.Open;
    end;
    showmessage('刷新数据库失败!');
end;
adoquery1.Close;
adoquery1.Open;
shdh:='';
end;

procedure Tfrmthgl.RzBitBtn7Click(Sender: TObject);
begin
frmcx:=tfrmcx.Create(self);
frmcx.adocx:=adoquery2;
frmcx.ShowModal;
adoquery2:=frmcx.adocx;
ADOquery2.Requery();
end;

procedure Tfrmthgl.RzBitBtn8Click(Sender: TObject);
begin
if adoquery4.State in[dsinsert] then
   begin
   strsql:='delete from thgl_detail where thdh='+''''+trim(dbedit1.Text)+'''';
   adodel(adoquery3,strsql);
   adoquery3.Close;
   adoquery1.Close;
   adoquery1.open;
   end;
RzBitBtn1.Enabled:=true;
RzBitBtn2.Enabled:=true;
RzBitBtn3.Enabled:=false;
adoquery2.CancelUpdates;
end;

procedure Tfrmthgl.RzBitBtn9Click(Sender: TObject);
begin
adoquery1.Close;
adoquery2.Close;
adoquery3.Close;
close;
end;

procedure Tfrmthgl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

procedure Tfrmthgl.DBEdit4Enter(Sender: TObject);
begin
RzToolbarButton3.Visible:=true;
end;

procedure Tfrmthgl.TabSheet2Enter(Sender: TObject);
begin
if adoquery1.Recordset.EOF and adoquery1.Recordset.BOF then exit;
   edit1.Text:=adoquery1.fieldbyname('单价').AsString;
   edit2.Text:=adoquery1.fieldbyname('数量').AsString;
   edit1.SetFocus;
end;

procedure Tfrmthgl.edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9',#46,#8] ) then
    key:=#0;
end;

procedure Tfrmthgl.edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9',#46,#8] ) then
    key:=#0;
end;

procedure Tfrmthgl.RzBitBtn4Click(Sender: TObject);
begin
if (trim(edit1.Text)='0') or (trim(edit2.Text)='0') then
   begin
       showmessage('单价或数量不能为0');
       exit;
   end;
try
   strsql:='update thgl_detail set dj='+trim(edit1.Text)+',sl='+
   trim(edit2.Text)+' where thdh='+''''+
   adoquery1.fieldbyname('退货单号').AsString+
   ''''+'and wldm='+''''+adoquery1.fieldbyname('物料代码').AsString+'''';
   adoquery3.Close;
   adoquery3.SQL.Clear;
   adoquery3.SQL.Add(strsql);
   adoquery3.ExecSQL;
   adoquery3.Close;
   adoquery1.Requery;
except
   showmessage('更新退货单失败');
end;
RzPageControl1.ActivePageIndex:=0;
end;

procedure Tfrmthgl.RzBitBtn6Click(Sender: TObject);
begin
if not qxjc(userid,'thd_del') and (username<>trim(dbedit4.Text)) then exit;
if adoquery2.Recordset.EOF and adoquery2.Recordset.BOF then exit;
if messagebox(handle,'是否真的要删除该退货单吗?','警告',mb_yesno+mb_iconquestion)=idno then exit;
try
    strsql:='exec p_thd_del '+trim(dbedit1.Text);
    adodel(adoquery3,strsql);
    adoquery2.Delete;
    adoquery2.Requery();
    adoquery3.Close;
    adoquery1.close;
    adoquery1.Open;
except
    showmessage('删除退货单失败');
end;
end;

procedure Tfrmthgl.RzBitBtn12Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=0;
end;

procedure Tfrmthgl.RzMenuToolbarButton1Click(Sender: TObject);
begin
frmgyslb:=tfrmgyslb.Create(self);
frmgyslb.ShowModal;
dbedit3.Text:=lbname;
end;

procedure Tfrmthgl.DBEdit1Change(Sender: TObject);
begin
if trim(dbedit1.Text)='' then exit;
strsql:='select * from view_thgl where 退货单号='+''''+trim(dbedit1.Text)+'''';
adoexect(adoquery1,strsql);
end;

procedure Tfrmthgl.DBGridEh1DblClick(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=1;
end;

procedure Tfrmthgl.DBEdit3Enter(Sender: TObject);
begin
RzToolbarButton2.Visible:=true;
end;

procedure Tfrmthgl.DBEdit3Exit(Sender: TObject);
begin
RzToolbarButton2.Visible:=false;
end;

procedure Tfrmthgl.RzToolbarButton2Click(Sender: TObject);
begin
lbname:='';                                                    //lbname 用来传递供应商代码
title:='';                                                     //title 用来传递联系人                                                 // strpath 用来传递供应商名称
frmgyslb:=tfrmgyslb.Create(self);
frmgyslb.ShowModal;
dbedit3.Text:=lbname;
end;

procedure Tfrmthgl.RzToolbarButton3Click(Sender: TObject);
begin
strhthm:='';
title:='';
gysdm:='';
bb:='';
frmshdh_lb:=tfrmshdh_lb.Create(self);
frmshdh_lb.ShowModal ;
dbedit4.Text:=strhthm;
dbedit3.Text:=gysdm;
dbedit2.Text:=title;
dbcombobox2.Text:=bb;
end;

procedure Tfrmthgl.RzBitBtn5Click(Sender: TObject);
begin

if adoquery4.Active then adoquery4.Close;
adoquery4.Parameters.ParamByName('thdh').Value:=trim(dbedit1.Text);
adoquery4.Open;
form3.frDBDataSet1.dataset:=adoquery1;
form3.frDBDataSet2.dataset:=adoquery4;
form3.frReport1.DoublePass := True;
form3.frReport1.Clear;
form3.frReport1.LoadFromFile(strpath+'/report/thdh.frf');
frVariables['username']:=username;
form3.frReport1.Preview := Form3.frPreview1;
if form3.frReport1.PrepareReport then
  begin
    form3.frReport1.ShowPreparedReport;
  end;
form3.ShowModal;
end;

procedure Tfrmthgl.N1Click(Sender: TObject);
begin
if not qxjc(userid,'thd_edit') and (username<>trim(dbedit4.Text)) then exit;
shdh:=trim(dbedit4.Text);
frmshd_wllb:=tfrmshd_wllb.Create(self);
frmshd_wllb.ShowModal;
if shdh='' then exit;
try
   strsql:='select * from thgl_detail where thdh='+''''+trim(dbedit1.Text)+''''+
   'and wldm='+''''+wldm+'''';
   adoexect(adoquery3,strsql);
   if not(adoquery3.Recordset.EOF and adoquery3.Recordset.BOF) then
   begin
   messagebox(handle,'此物料在该退货单已经存在 ','信息',mb_ok+mb_iconinformation);
   exit;
   end;
   adoquery3.Append;
   adoquery3.FieldByName('wldm').AsString:=wldm;
   adoquery3.FieldByName('sl').Value:=xql;
   adoquery3.FieldByName('dj').Value:=unitprice;
   adoquery3.FieldByName('thdh').AsString:=trim(dbedit1.Text);
   adoquery3.Post;
except
   showmessage('添加退货物料时出错!');
end;
strhthm:='';
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
end;

procedure Tfrmthgl.dtp2Exit(Sender: TObject);
begin
csh;
end;

procedure Tfrmthgl.dtp3Exit(Sender: TObject);
begin
csh;
end;

procedure Tfrmthgl.N2Click(Sender: TObject);
begin
if not qxjc(userid,'thd_edit') and (username<>trim(dbedit4.Text)) then exit;
strsql:='delete from thgl_detail where thdh='+''''+trim(adoquery1.fieldbyname('退货单号').AsString)+
        ''''+'and wldm='+''''+trim(adoquery1.fieldbyname('物料代码').AsString)+'''';
adodel(adoquery3,strsql);
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
end;

procedure Tfrmthgl.PopupMenu1Popup(Sender: TObject);
begin
if adoquery1.Recordset.EOF and adoquery1.Recordset.bof then
   n2.Enabled:=false
   else
   n2.Enabled:=true;
end;

procedure Tfrmthgl.RzToolbarButton1Click(Sender: TObject);
begin
emplyer:='';
frmemplyer_lb:=tfrmemplyer_lb.create(self);
frmemplyer_lb.showmodal;
dbedit6.Text:=emplyer;
end;                                

procedure Tfrmthgl.DBGridEh1TitleClick(Column: TColumnEh);
begin
 Compositor(adoquery1,Column);
end;

end.

⌨️ 快捷键说明

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