📄 inv610_03.pas.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 + -