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

📄 inv610_03.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Inv610_03;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas100_01, StdCtrls, Buttons, ExtCtrls, Menus, DB, ADODB;

type
  TInv610_03Form = class(TBas100_01Form)
    Bevel1: TBevel;
    lblReport: TLabel;
    sbFromReport: TSpeedButton;
    edtFromReport: TEdit;
    edtToReport: TEdit;
    rbCheck: TRadioButton;
    rbUnCheck: TRadioButton;
    bbtnOk: TBitBtn;
    bbtnExit: TBitBtn;
    qryInv610A: TADOQuery;
    sbToReport: TSpeedButton;
    qryInv610AI610A_001: TWideStringField;
    qryInv610AI610A_002: TWideStringField;
    qryInv610AI600A_002: TWideStringField;
    qryInv500A: TADOQuery;
    qryInv500B: TADOQuery;
    qryInv610B: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbtnOkClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure sbFromReportClick(Sender: TObject);
    procedure sbToReportClick(Sender: TObject);
  private
    procedure SetInterface;
    procedure DoCheck;
    procedure DoUnCheck;
    { Private declarations }
  public
    procedure OpenData(ACode:String);
    { Public declarations }
  end;

var
  Inv610_03Form: TInv610_03Form;

implementation

uses SYSDATA, CommFun, InvComm, HwSelData;

{$R *.dfm}

procedure TInv610_03Form.OpenData(ACode:String);
begin
  rbCheck.Checked:=True;
  edtFromReport.Text:=ACode;
  edtToReport.Text:=ACode;
  qryInv610A.Close;
  qryInv610A.Open;
  qryInv610A.Locate('I610A_001',ACode,[]);
end;

procedure TInv610_03Form.SetInterface;
begin
  Caption:=GetDBString('INV61003001');  //审核
  rbCheck.Caption:=GetDBString('INV61003002');  //审核
  rbUnCheck.Caption:=GetDBString('INV61003003');  //反审核
  lblReport.Caption:=GetDBString('INV61003004');  //汇报单号
  bbtnOk.Caption:=GetDBString('INV61003005');  //确定(&O)
  bbtnExit.Caption:=GetDBString('INV61003006');  //退出(&X)
  qryInv610AI610A_001.DisplayLabel:=GetDBString('INV61003007');  //汇报单号
  qryInv610AI610A_002.DisplayLabel:=GetDBString('INV61003008');  //盘点计划
  qryInv610AI600A_002.DisplayLabel:=GetDBString('INV61003009');  //盘点名称
end;

procedure TInv610_03Form.FormCreate(Sender: TObject);
begin
  inherited;
  SetInterface;
  qryInv500A.Open;
  qryInv500B.Open;
end;

procedure TInv610_03Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryInv610A.Close;
  qryInv610B.Close;
  qryInv500A.Close;
  qryInv500B.Close;
end;

//审核
procedure TInv610_03Form.DoCheck;
var
  ADate:TDateTime;
  ACode,AReport,ASummary,ACaption:String;
  AIsAutoCode:Boolean;
  I:Integer;
begin
  ADate:=GetServerDate;
  AIsAutoCode:=GetAutoCoding('INV500');
  ASummary:=GetDBString('INV61003010');  //盘点调整库存
  ACaption:=GetDBString('INV61003011');  //调整单号

  //产生库存数量调整记录(操作类型=盘点调整)  类型编号=14
  //1.产生库存数量调整记录
  I:=0;
  AReport:='';
  qryInv610B.Close;
  qryInv610B.SQL.Clear;
  qryInv610B.SQL.Add('select A.*,B.*,C.*,D.*,E.I150_011 from INV610A A,INV610B B,INV600A C,INV600B D,INV150 E');
  qryInv610B.SQL.Add('where I610A_001=I610B_001 and I610A_002=I600A_001 and I600A_001=I600B_001 and I610B_002=I600B_002 and I600B_003=I150_001 and');
  qryInv610B.SQL.Add('(I610A_015 is null or I610A_015='''') and I610A_001>='+''''+edtFromReport.Text+''''+' and I610A_001<='+''''+edtToReport.Text+'''');
  qryInv610B.Open;
  if qryInv610B.IsEmpty then
  begin
    ShowMsg('UMS10000517');  //选择的范围内没有可以审核的单据
    Abort;
  end;
  while not qryInv610B.Eof do
  begin
    if AReport<>qryInv610B.FieldByName('I610A_001').Value then
    begin
      if ACode<>'' then
      begin
        //1A.设置盘点计划状态为“完成”状态,实际完成日期=当前审核日期
        ExecSQL('update INV600A set I600A_003=2,I600A_008='+GetDateString(ADate)+' where I600A_001='+''''+qryInv610B.FieldByName('I600B_001').AsString+'''');
        //1B.设置盘点汇报的审核日期=当前审核日期,审核人员=当前操作人员,调整单号=新增的调整单号
        ExecSQL('update INV610A set I610A_008='+GetDateString(ADate)+',I610A_009='+''''+AUserName+''''+',I610A_015='+''''+ACode+''''+' where I610A_001='+''''+AReport+'''');
      end;
      I:=0;
      AReport:=qryInv610B.FieldByName('I610A_001').Value;
      qryInv500A.Append;
      qryInv500A.FieldByName('I500A_002').Value:=14;  //操作类型=盘点调整
      qryInv500A.FieldByName('I500A_003').Value:=ASummary;  //摘要说明=盘点调整库存
      qryInv500A.FieldByName('I500A_004').Value:=FormatDateTime(ASystemDate,ADate);  //进出日期
//      qryInv500A.FieldByName('I500A_005').Value:=;  //客户编号
      qryInv500A.FieldByName('I500A_006').Value:=ACurrNo;  //币别编号=本位币号
      qryInv500A.FieldByName('I500A_007').Value:=1;  //汇率
      qryInv500A.FieldByName('I500A_008').Value:=qryInv610B.FieldByName('I600A_004').Value;  //仓库编号
//      qryInv500A.FieldByName('I500A_009').Value:=;  //备注说明
      qryInv500A.FieldByName('I500A_010').Value:=ADate;  //制单日期
      qryInv500A.FieldByName('I500A_011').AsString:=AUserName;  //制单人员
      qryInv500A.FieldByName('I500A_012').Value:=ADate;  //修改日期
      qryInv500A.FieldByName('I500A_013').AsString:=AUserName;  //修改人员
//      qryInv500A.FieldByName('I500A_014').Value:=;  //领用人员
//      qryInv500A.FieldByName('I500A_015').Value:=;  //领用部门
//      qryInv500A.FieldByName('I500A_016').Value:=;  //相关单号
      if AIsAutoCode then ACode:=GetAutoCode('INV500') else InputBox(ACaption,ACaption,ACode);  //调整单号
      qryInv500A.FieldByName('I500A_001').Value:=ACode;
      qryInv500A.Post;
    end;

    //2.更新料品明细信息
    if qryInv610B.FieldByName('I610B_005').AsFloat<>0 then
    begin
      I:=I+1;
      qryInv500B.Append;
      qryInv500B.FieldByName('I500B_001').Value:=ACode;
      qryInv500B.FieldByName('I500B_002').Value:=I;
      qryInv500B.FieldByName('I500B_003').Value:=qryInv610B.FieldByName('I600B_003').Value;  //料品编号
      qryInv500B.FieldByName('I500B_004').Value:=qryInv610B.FieldByName('I150_011').Value;  //计量单位
      qryInv500B.FieldByName('I500B_005').Value:=qryInv610B.FieldByName('I610B_005').Value;  //进出数量
      qryInv500B.FieldByName('I500B_006').Value:=0;  //单位价格
      qryInv500B.FieldByName('I500B_007').Value:=0;  //料品金额
      qryInv500B.FieldByName('I500B_008').Value:=qryInv610B.FieldByName('I600A_004').Value;  //仓库编号
//     qryInv500B.FieldByName('I500B_009').Value:=;  //生产日期
//     qryInv500B.FieldByName('I500B_010').Value:=;  //生产批号
//     qryInv500B.FieldByName('I500B_011').Value:=;  //来源单号
//     qryInv500B.FieldByName('I500B_012').Value:=;  //来源行号
      qryInv500B.FieldByName('I500B_013').Value:=qryInv610B.FieldByName('I610B_005').Value;  //应收发量
      qryInv500B.FieldByName('I500B_014').Value:=1;  //单位转换率
//     qryInv500B.FieldByName('I500B_015').Value:=;  //已收发量
      qryInv500B.Post;
    end;
    qryInv610B.Next;
  end;

  //3.更新库存流水帐及余额表
  qryInv500A.First;
  while not qryInv500A.Eof do
  begin
    //3A.更新库存流水帐表INV500
//    AddWasteItems(qryInv500A.FieldByName('I500A_001').Value,'INV500');
    //3B.更新库存余额表INV501
//    ModReceivedNum('ADD',qryInv500A.FieldByName('I500A_001').Value);
    qryInv500A.Next;
  end;
end;

//反审核
procedure TInv610_03Form.DoUnCheck;
var
  ACode:String;
begin
  qryInv610B.Close;
  qryInv610B.SQL.Clear;
  qryInv610B.SQL.Add('select * from INV610A');
  qryInv610B.SQL.Add('where (I610A_015 is not null or I610A_015<>'''') and I610A_001>='+''''+edtFromReport.Text+''''+' and I610A_001<='+''''+edtToReport.Text+'''');
  qryInv610B.Open;
  if qryInv610B.IsEmpty then
  begin
    ShowMsg('UMS10000518');  //选择的范围内没有可以反审核的单据
    Abort;
  end;
  while not qryInv610B.Eof do
  begin
    ACode:=qryInv610B.FieldByName('I610A_015').AsString;
    //删除库存数量调整记录(操作类型=盘点调整)  类型编号=14
    //1.更新库存流水帐表INV500
//    DelWasteItems(ACode,'INV500');

    //2.更新库存余额表INV501
//    ModReceivedNum('DEL',ACode);

    //3.删除库存数量调整记录
    ExecSQL('delete from INV500B where I500B_001='+''''+ACode+'''');
    ExecSQL('delete from INV500A where I500A_001='+''''+ACode+'''');

    //4.设置盘点计划状态为“完成”状态,实际完成日期=当前审核日期
    ExecSQL('update INV600A set I600A_003=1,I600A_008=null where I600A_001='+''''+qryInv610B.FieldByName('I610A_002').AsString+'''');

    //5.设置盘点汇报的审核日期=当前审核日期,审核人员=当前操作人员,调整单号=新增的调整单号
    ExecSQL('update INV610A set I610A_008=null,I610A_009=null,I610A_015=null where I610A_001='+''''+qryInv610B.FieldByName('I610A_001').AsString+'''');

    qryInv610B.Next;
  end;
end;

procedure TInv610_03Form.bbtnOkClick(Sender: TObject);
begin
  inherited;
//确定(&O)
  try
    Screen.Cursor:=crHourGlass;
    qryInv500A.Close;
    qryInv500B.Close;
    qryInv500A.Open;
    qryInv500B.Open;
    if rbCheck.Checked then DoCheck;  //1.审核
    if rbUnCheck.Checked then DoUnCheck; //2.反审核
    ShowMsg('UMS10000519');  //审核或反审核操作成功完成
    ModalResult:=1;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TInv610_03Form.bbtnExitClick(Sender: TObject);
begin
  inherited;
//退出(&X)
  Close;
end;

procedure TInv610_03Form.sbFromReportClick(Sender: TObject);
begin
  inherited;
//开始汇报单号
  if not edtFromReport.Focused then edtFromReport.SetFocus;
  qryInv610A.Close;
  qryInv610A.Open;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv610A,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtFromReport.Text:=qryInv610A.FieldByName('I610A_001').AsString;
  end;
end;

procedure TInv610_03Form.sbToReportClick(Sender: TObject);
begin
  inherited;
//结束汇报单号
  if not edtToReport.Focused then edtToReport.SetFocus;
  qryInv610A.Close;
  qryInv610A.Open;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv610A,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtToReport.Text:=qryInv610A.FieldByName('I610A_001').AsString;
  end;
end;

end.

⌨️ 快捷键说明

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