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

📄 material_ck.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Material_CK;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, StdCtrls, Buttons, Spin, ComCtrls, Mask, Grids,
  DBGrids, ExtCtrls, DB, ADODB;

type
  TForm_Material_CK = class(TForm)
    DS_material: TDataSource;
    ADOQ_CK_mate: TADOQuery;
    DS_CK_mate_Q: TDataSource;
    ADOQ_CK_mateckid: TAutoIncField;
    ADOQ_CK_matemat_id: TStringField;
    ADOQ_CK_matenum: TFloatField;
    ADOQ_CK_mateckdate: TDateTimeField;
    ADOQ_CK_matetmp_id: TIntegerField;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    Panel4: TPanel;
    DBGrid3: TDBGrid;
    Panel5: TPanel;
    Label5: TLabel;
    Label14: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label12: TLabel;
    Bevel1: TBevel;
    Label18: TLabel;
    Edit_id: TEdit;
    Edit_name: TEdit;
    OKBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    ComboBox3: TComboBox;
    Edit2: TEdit;
    ComboBox2: TComboBox;
    GroupBox4: TGroupBox;
    Label13: TLabel;
    Label16: TLabel;
    Sdate: TDateTimePicker;
    Edate: TDateTimePicker;
    Panel3: TPanel;
    Label22: TLabel;
    Label23: TLabel;
    Edit_empid: TEdit;
    Edit_empname: TEdit;
    Button1: TButton;
    ADOQ_CK_mateempid: TIntegerField;
    ADOQemp: TADOQuery;
    DS_emp_Q: TDataSource;
    ADOQ_CK_mateempname: TStringField;
    ADOQ_CK_mateunit: TStringField;
    ADOQ_tmp: TADOQuery;
    ADOQ_CK_matemat_name: TStringField;
    ADOQ_CK_mateopername: TStringField;
    Lookup_matype: TComboBox;
    DBLookup_operid: TComboBox;
    ADOQ_material: TADOQuery;
    ADOQ_materialmat_id: TStringField;
    ADOQ_materialmat_name: TStringField;
    ADOQ_materialflag: TBooleanField;
    ADOQ_materialprice: TBCDField;
    ADOQ_materialcolor: TStringField;
    ADOQ_materialunit: TStringField;
    ADOQ_materialmatype_name: TStringField;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    Panel6: TPanel;
    Label3: TLabel;
    Label25: TLabel;
    Label19: TLabel;
    Label8: TLabel;
    Label4: TLabel;
    DBLookupComboBox1: TComboBox;
    Edit3: TEdit;
    Bit_Ser2: TBitBtn;
    DBE_matid: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit1: TDBEdit;
    Label1: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    SpinEdit_num: TSpinEdit;
    DBText1: TDBText;
    BitBtn_CK: TBitBtn;
    GroupBox3: TGroupBox;
    DBGrid2: TDBGrid;
    Panel7: TPanel;
    Label24: TLabel;
    Label17: TLabel;
    Label6: TLabel;
    Label2: TLabel;
    Edit4: TEdit;
    DBEdit5: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit2: TDBEdit;
    SerBtn: TBitBtn;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    LocateBtn: TBitBtn;
    ExtBtn: TBitBtn;
    BtnExport: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn_CKClick(Sender: TObject);
    procedure LocateBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure SerBtnClick(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Bit_Ser2Click(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure PageControl1Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBLookupComboBox1Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure BtnExportClick(Sender: TObject);
  private
    { Private declarations }
    procedure refreshdb;
  public
    { Public declarations }
  end;

var
  Form_Material_CK: TForm_Material_CK;

implementation
uses data, sharevar, sharefun, employee, Main;

{$R *.dfm}

procedure TForm_Material_CK.refreshdb;
begin
  with ADOQ_material do
  begin
    close;
    sql.Strings[2]:='';
    open;
  end;
  //显示员工信息表
  with ADOQemp do
  begin
      close;sql.clear;
      sql.add('select employee.*,duty.dutyname,department.depname from employee,duty,department');
      sql.Add(' where duty.dutyid=employee.dutyid and employee.depid=department.depid and state=1');
      open;
  end;

  with ADOQ_CK_mate do
  begin
      try
         close;
         sql.Strings[2]:='';
         sql.Strings[3]:='order by e.matype_name, a.mat_id,a.ckdate,a.num desc';
         execsql;
         open;
      except
         MsgErr(handle,'刷新数据库失败(Material_CK_Q)!');
      end;
  end;
end;

procedure TForm_Material_CK.FormCreate(Sender: TObject);
begin
  with ADOQ_material do begin close; open; end;
  //显示员工信息表
  with ADOQemp do
  begin
      close;sql.clear;
      sql.add('select employee.*,duty.dutyname,department.depname from employee,duty,department');
      sql.Add(' where duty.dutyid=employee.dutyid and employee.depid=department.depid and state=1');
      open;
  end;
end;

procedure TForm_Material_CK.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if ADOQ_material.Active then  ADOQ_material.close;
  if ADOQ_CK_mate.Active then ADOQ_CK_mate.close;
  action:=cafree;
end;

procedure TForm_Material_CK.BitBtn_CKClick(Sender: TObject);
var
emp_name, mat_id, mat_name, tmp_unit, qst_str, tmp_event, info: string;
ck_num, kc_num, unitprice: real;
emp_id, tmp_id: integer;  //edit_kc_ret_1
ckmat_flag:boolean;
begin
  if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
  begin
    MsgOk(handle,'仓库发料失败,请重试!');
    exit;
  end;

  mat_id:=trim(DBE_matid.Text);
  if mat_id='' then
  begin
        messagebox(handle,'请选择待发出的物料!','警告',mb_ok or MB_ICONINFORMATION);
        DBLookupComboBox1.SetFocus;
        exit;
  end;
  mat_name:=trim(DBEdit1.Text);
  tmp_unit:=ADOQ_material.FieldValues['unit'];
  if trim(SpinEdit_num.Text)='' then
  begin
        messagebox(handle,'请输入物料出库的数量!','警告',mb_ok or MB_ICONINFORMATION);
        SpinEdit_num.SetFocus;
        exit;
  end;
  
  ck_num:=strtofloat(trim(SpinEdit_num.Text));

  if ck_num<=0 then
  begin
        messagebox(handle,'请输入正确的发料数量!','警告',mb_ok or MB_ICONINFORMATION);
        SpinEdit_num.SetFocus;
        exit;
  end;
  if trim(DBEdit5.Text)='' then
  begin
    MsgOk(handle,'请选择待领料的人员信息!');
    DBGrid2.SetFocus;
    exit;
  end;
  emp_id:=strtoint(trim(DBEdit5.Text));
  emp_name:=trim(DBEdit2.Text);

  //判断物料库存数量是否够发料
  
  if not findRec('kc_material','mat_id',mat_id,info) then
  begin
      msgok(handle, '该物料无库存,请选择其它的物料!');
      exit;
  end;
  with ADOQ_tmp do
  begin
    close; sql.Clear;
    sql.Add('select num from kc_material where mat_id=:mat_id');
    parameters.ParamValues['mat_id']:=mat_id;
    open;
    kc_num:=fieldvalues['num'];
    if kc_num<ck_num then
    begin
      msgok(handle, '该物料库存数不够发料,只剩下 '+floattostr(kc_num)+' '+tmp_unit);
      exit;
    end;
    close;
  end;

  qst_str:='确定编号为 ['+inttostr(emp_id)+'] 的人员['+emp_name+']需领物料 ['+mat_name+'] '+floattostr(ck_num)+tmp_unit+'吗?';

  //是否显示工人需支付的个人工资金额
  if ADOQ_material.FieldValues['flag'] then
  begin
    unitprice:=ADOQ_material.FieldValues['price'];
    info:='     物料单价为: ¥'+format('%.2f',[unitprice])+#13+#13+'     共需支付: ¥'+format('%.2f',[ck_num*unitprice]);
    if MsgQst(handle,qst_str+#13+#13+info)=IDNO then EXIT;
  end
  else
  if MsgQst(handle,qst_str)=IDNO then EXIT;


///////////////////////////////////////////
    
  //数据提交开始
  ckmat_flag:=true;
  datamod.ADOCon.BeginTrans;
  
  //1.出库表新增一条出库记录
  with ADOQ_tmp do
  begin
    close;sql.clear;
    sql.add('INSERT INTO ck_material(empid, mat_id, num, tmp_id)');
    sql.add(' VALUES (:empid,:mat_id,:num,:tmp_id)');
    parameters.ParamValues['empid']:=emp_id;
    parameters.ParamValues['mat_id']:=mat_id;
    parameters.ParamValues['num']:=ck_num;
    parameters.ParamValues['tmp_id']:=tmp_id;
    try
      execsql;
    except
      if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
      MsgErr(handle,'物料出库处理失败--1!');
      ckmat_flag:=false; exit;
    end;
  end;

  //2.更新库存表的库存量
  with ADOQ_tmp do
  begin
    close;sql.clear;
    sql.Add('update kc_material set num=:num where (mat_id=:mat_id)');
    parameters.ParamValues['num']:=kc_num-ck_num;
    parameters.ParamValues['mat_id']:=mat_id;
    try

⌨️ 快捷键说明

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