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

📄 ufpublish_jhmnt.pas

📁 一个功能较全的图书进销存软件,功能还算完备
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{**********************************************

Copyright (C) 2004 hill
<Written By> 刘山
<Unit>   进货单元
<What>   实现发行站进货输入,查询功能
<When>   2003-12-31
**********************************************}


unit ufPublish_JhMnt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, Grids, DBGrids, DBCtrls,
  Mask, DB, Menus, CheckLst, ADODB, Provider, DBTables, DBClient, {DBLocal,
  DBLocalB,} StrUtils;

type
  TfPublish_JhMnt = class(TForm)
    dsJh: TDataSource;
    pnlHead: TPanel;
    Panel1: TPanel;
    UpdateBtn: TBitBtn;
    ApplyBtn: TBitBtn;
    CancelBtn: TBitBtn;
    InsertBtn: TBitBtn;
    DeleteBtn: TBitBtn;
    PrintBtn: TBitBtn;
    ExitBtn: TBitBtn;
    dgrdJh_Head: TDBGrid;
    grpbxHead: TGroupBox;
    dtxtID: TDBText;
    StaticText1: TStaticText;
    StaticText3: TStaticText;
    dedtBarcode: TDBEdit;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    dedtCode: TDBEdit;
    dedtISBN: TDBEdit;
    StaticText9: TStaticText;
    StaticText10: TStaticText;
    StaticText11: TStaticText;
    StaticText12: TStaticText;
    StaticText13: TStaticText;
    StaticText14: TStaticText;
    dedtEnName: TDBEdit;
    dedtGetID: TDBEdit;
    dedtInP: TDBEdit;
    dedtPage: TDBEdit;
    P_name: TStaticText;
    StaticText17: TStaticText;
    dedtQty: TDBEdit;
    StaticText18: TStaticText;
    dedtAQty: TDBEdit;
    dedtCnName: TDBEdit;
    dedtPrice: TDBEdit;
    StaticText2: TStaticText;
    dgrdBook: TDBGrid;
    StaticText20: TStaticText;
    dchkbxStatus1: TDBCheckBox;
    StaticText21: TStaticText;
    dtxtDate: TDBText;
    StaticText22: TStaticText;
    dtxtOpe: TDBText;
    SaveBtn: TBitBtn;
    StaticText16: TStaticText;
    dchkbxStatus2: TDBCheckBox;
    dcbxType: TDBComboBox;
    dcbxMType: TDBComboBox;
    dcbxZaiti: TDBComboBox;
    dcbxPro_ID: TDBComboBox;
    p_ID: TStaticText;
    cbxPro_name: TComboBox;
    dsShare: TDataSource;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    dchxbxstatus3: TDBCheckBox;
    procedure ExitBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure InsertBtnClick(Sender: TObject);
    procedure ApplyBtnClick(Sender: TObject);
    procedure cbxPro_nameChange(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure cbxPro_nameExit(Sender: TObject);
    procedure dchkbxStatus1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dcbxTypeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DeleteBtnClick(Sender: TObject);
    procedure UpdateBtnClick(Sender: TObject);
    procedure dcbxTypeExit(Sender: TObject);
    procedure dcbxMTypeExit(Sender: TObject);
    procedure dcbxZaitiExit(Sender: TObject);
    procedure edtBookTypeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dedtBarcodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dedtBarcodeExit(Sender: TObject);
    procedure dgrdBookCellClick(Column: TColumn);
    procedure dedtCodeExit(Sender: TObject);
    procedure PrintBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure cbxPro_nameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

  private
    //判断入库表是添加还是修改 保存时使用
    // 0-默认;1-添加保存;2-修改保存
    adoStatus:integer;
    //判断新增的书籍是新增的还是已有的
    // 0-默认;1-新增的;2-已有的;
    // 3-新增,但该记录的条形码是已存在的,要小心记录会重复
    BookStatus:integer;
    //判断选择的是哪个表的书籍数据
    // 0-默认;1-Publish_Book表
    dsStatus:integer;
    //保留当前日期
    CurrentDate:String;
    //置控件状态
    procedure SetStatus(status:boolean);
    //置按钮状态
    procedure SetBStatus(status:boolean);
    //置供应商对应的控件状态
    procedure SEtPstatus(status:boolean);
    //处理条形码
    procedure OperateBarcode;
    //查看记录输入是否完全
    function check():Boolean;
    { Private declarations }

  public
    { Public declarations }

  end;
const
  Ope='张三';
var
  fPublish_JhMnt: TfPublish_JhMnt;


implementation

uses udmpublish,
 Uglobal,
 ufPublish_JhMnt_qr;


{$R *.dfm}


procedure TfPublish_JhMnt.ExitBtnClick(Sender: TObject);
begin
close;
end;

procedure TfPublish_JhMnt.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  fPublish_Jhmnt:=nil;
  action:=cafree;
end;
//窗体显示
procedure TfPublish_JhMnt.FormShow(Sender: TObject);
begin
  //置控件状态为无效
  SetStatus(false);
  SetPstatus(false);
  //置按钮状态为有效
  SetBStatus(true);
  //重新查询一遍
  dmpublish.adsJh.Requery();
  adoStatus:=0;
  BookStatus:=0;
  dsStatus:=0;
    dgrdbook.DataSource:=nil;
    dgrdbook.Columns.Clear;
end;
//窗体初始化
procedure TfPublish_JhMnt.FormCreate(Sender: TObject);
begin
  //打开表
  if c_getid(dmpublish.adsShare,'Value','dict',' Class=''币种'' and Parent=''币种'' and Status',dcbxMType)
    and  c_getid(dmpublish.adsShare,'Value','dict',' Class=''载体'' and Parent=''载体'' and Status',dcbxZaiti)
    and  c_getPid2(dmpublish.adsShare,'ID','NAME','PROVIDER','STATUS',dcbxPro_id,cbxPro_name)
  then
  begin
    with dmpublish do
    begin
      if adsjh.Active then
        adsjh.Active:=false;
      if adspubbook.Active then
        adspubbook.Active:=false;
      if not adsjh.Active then
      begin
        adsjh.commandtext:='select * from PUBLISH_STORAGE_IN where STATUS=''1''';
        adsjh.Active:=true;
      end;
      if not adspubbook.Active then
      begin
        adspubbook.commandtext:='select * from PUBLISH_BOOK where STATUS=''1''';
        adspubbook.Active:=true;
      end;
    end;
  end
  else
  begin
    MSG('加入外码出错,请检查数据库!','W');
  end;
end;

procedure TfPublish_JhMnt.SetStatus(status: boolean);
begin
  dcbxMType.Enabled:=status;
  dcbxType.Enabled:=status;
  dcbxZaiti.Enabled:=status;
  dedtAQty.Enabled:=status;
  dedtBarcode.Enabled:=status;
  dedtCnname.Enabled:=status;
  dedtCode.Enabled:=status;
  dedtEnname.Enabled:=status;
  dedtGEtID.Enabled:=status;
  dedtInp.Enabled:=status;
  dedtisbn.Enabled:=status;
  dedtpage.Enabled:=status;
  dedtprice.Enabled:=status;
  dedtqty.Enabled:=status;
  dgrdBook.Enabled:=status;


end;

procedure TfPublish_JhMnt.SetBStatus(status: boolean);
begin
  InsertBtn.Enabled:=status;
  UpdateBtn.Enabled:=status;
  DeleteBtn.Enabled:=status;
  ExitBtn.Enabled:=status;
  PrintBtn.Enabled:=status;
  SaveBtn.Enabled:=status;
  Applybtn.Enabled:=not status;
  CancelBtn.Enabled:=not status;
end;

procedure TfPublish_JhMnt.InsertBtnClick(Sender: TObject);
begin
  //置控件状态为有效
  SetStatus(true);
  SetPstatus(true);
  //置按钮状态为无效
  SetBStatus(false);
  //获得币种和载体的数据
    adoStatus:=1;
    dmpublish.adsJh.Append;
    dchkbxStatus1.Checked:=true;
    dchkbxStatus2.Checked:=false;
    dchkbxstatus2.Field.AsString:='0';
    dchkbxstatus1.Field.AsString:='1';
    dedtqty.Field.AsInteger:=1;
    dedtaqty.Field.AsInteger:=1;
    dtxtOpe.Field.AsString:=Ope;
    dcbxtype.ItemIndex:=-1;
    dcbxMtype.ItemIndex:=-1;
    dcbxzaiti.ItemIndex:=-1;
    dedtBarcode.SetFocus;
end;


procedure TfPublish_JhMnt.ApplyBtnClick(Sender: TObject);
var
  i:integer;
  txtid:string;
begin
  //检查输入记录是否完整
  if check() then
  begin
    //取数据库时间
    with dmpublish.l_store do
    begin
      procedurename:='geddate;1';
      parameters.Clear;
      parameters.CreateParameter('@out',ftDatetime,pdoutput,0,Unassigned);
      Prepared;
      execproc;
      if parameters[0].Value<>null then
      begin
        dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD HH:MM:SS',parameters[0].Value);
        CurrentDate:=FormatDateTime('YYYYMMDD',parameters[0].Value);
      end
      else
        dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD HH:MM:SS',Now());
        CurrentDate:=FormatDateTime('YYYYMMDD',Now());
    end;
    { TODO : 判断是增加的操作,还是修改的操作 }
    //增加的操作
    if adoStatus=1 then
    begin
    { TODO : 取操作流水号 }
      with dmpublish.adsShare do
      begin
        if Active then
          Active := False;
        CommandText := 'select operate_order from publish_storage_in where (Id in'+
                  ' (select Max(id)	  from publish_storage_in	  where '+
                  ' status=''1'' and operate_order like ''RK'''+'+'''+CurrentDate+'''+'+'''%'')      )';
        Active := True;
      end;
      if dmpublish.adsShare.RecordCount=0 then
      begin
        //若是第一条记录
        dtxtID.Field.AsString:='RK'+CurrentDate+'001';
        txtid:='RK'+CurrentDate+'001';
      end
      else begin
        //若不是,则取出最大,+1
        i:=strtoint(copy(dmpublish.adsShare.fieldbyname('operate_order').AsString,11,3))+1;
        dtxtID.Field.AsString:='RK'+CurrentDate+copy('000',1,3-length(inttostr(i)))+inttostr(i);
        txtid:='RK'+CurrentDate+copy('000',1,3-length(inttostr(i)))+inttostr(i);
      end;
      if BookStatus=2 then                //该书籍是已有的
        dchxbxstatus3.Field.AsString:='1'
      else if BookStatus=3 then
      begin
        { TODO : 如果是新增的记录,判断是否会有重复记录 }
        if not dmpublish.adsPubBook.Locate('book_barcode;cn_name;show_price;status',varArrayOF([trim(dedtbarcode.Text),trim(dedtcnname.Text),trim(dedtprice.Text),'1']),[loCaseInsensitive]) then
          dchxbxstatus3.Field.AsString:='0'
        else
        begin
          MSG('输入的书籍记录已经存在,请重新输入!','W');
          exit;
        end;
      end
      else
        dchxbxstatus3.Field.AsString:='0';
    end;
    { TODO : 如果书籍类型为标准,保存时isbn为空,则用标准号代替isbn }
    if (trim(dcbxtype.Text)='标准') and (trim(dedtisbn.Text)='') then
      dedtisbn.Field.asstring:=dedtcode.Field.AsString;
    { TODO : 保存记录 }
    try
      dmpublish.adsJh.UpdateBatch();      //保存
      if adostatus=1 then
        MSG('记录添加成功!当前流水号为'+txtid,'I')
      else
        MSG('记录修改成功!','I');
      formshow(fPublish_JhMnt);
    except
      if adostatus=1 then
        MSG('操作出错,记录添加失败!','W')
      else
        MSG('操作出错,记录修改失败!','W');
      dmpublish.adsJh.CancelUpdates;
      formshow(fPublish_JhMnt);
    end;
  end
  else
  begin
    MSG('信息录入不全,请检查后再保存!','W');
  end;
end;

function TfPublish_JhMnt.check: Boolean;
begin
  Result:=True;
  if trim(dedtBarcode.Text)='' then
    result:=false;
  if trim(dedtCnName.Text)='' then
    result:=false;
  if trim(dedtPrice.Text)='' then
    result:=false;
  if trim(dcbxType.Text)='' then
    result:=false;
  if trim(dedtQty.Text)='' then
    result:=false;
  if trim(dedtAQty.Text)='' then
    result:=false;
  if trim(dcbxMType.Text)='' then
    result:=false;
  if trim(dcbxZaiti.Text)='' then
    result:=false;
  if trim(cbxPro_name.Text)='' then
    result:=false;
end;

procedure TfPublish_JhMnt.cbxPro_nameChange(Sender: TObject);
begin
if cbxpro_name.ItemIndex<>-1 then
begin
   dcbxpro_id.ItemIndex:=cbxpro_name.ItemIndex;
   dcbxpro_id.Field.AsString:=dcbxpro_id.Text;
end;
end;

procedure TfPublish_JhMnt.CancelBtnClick(Sender: TObject);
begin
 if Msg('确定要取消操作吗?','Q')then
  begin
    dmpublish.adsJh.CancelUpdates;
    formshow(fPublish_JhMnt);
  end;
end;

procedure TfPublish_JhMnt.cbxPro_nameExit(Sender: TObject);
begin
if trim(cbxpro_name.Text)<>'' then

⌨️ 快捷键说明

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