📄 inv_amountadjust_b.pas
字号:
unit Inv_AmountAdjust_B;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, ExtCtrls,
ComCtrls, ToolWin, Mask, StdCtrls, ExtEdit, DBCtrls, ExtPrintReport, jpeg;
Type
TFrm_Inv_AmountAdjust_B = Class(TFrm_Base_Entry_Body)
Label1: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label10: TLabel;
MEdt_Date: TMaskEdit;
CmBx_WhCode: TComboBox;
CmBx_BillType2Code: TComboBox;
Edt_RemArk: TEdit;
Edt_BillNo: TEdit;
AdoQry_HeadNew: TAdoQuery;
procedure FormCreate(Sender: TObject);
procedure DateCheck(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
private
{ Private declarations }
AdoQry_HeadOld:TAdoQuery;
public
{ Public declarations }
procedure InitControls;Override;
procedure SaveHeadData;Override;
procedure SaveData; Override;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String);Override;
procedure InitForm(AdOConnection:TAdOConnection;FormStatus:String;
AdoQuery:TAdoQuery); Override;
end;
var
Frm_Inv_AmountAdjust_B: TFrm_Inv_AmountAdjust_B;
implementation
uses Sys_Global,Inv_AmountAdjust_D,Inv_Global;
{$R *.DFM}
procedure TFrm_Inv_AmountAdjust_B.InitControls;
var
BillId:String;
begin
SetFocus_Control:=CmBx_WhCode;
Caption:='金额调整';
Pnl_Title.Caption:='金额调整';
inherited;
if Status<>'Add' then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select InvBillId From InvInBill'
+' Where InvBillNo='''+AdoQry_HeadOld.fieldbyname('InvBillNo').AsString+''''
+' And WHCode='''+AdoQry_HeadOld.fieldbyname('WHCode').AsString+'''';
AdoQry_Tmp.Open;
BillId:=AdoQry_Tmp.fieldbyname('InvBillId').AsString;
end
else
BillId:='-1';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:='Select'
+' InvInBillLine.InvBillLineNo'
+',InvInBillLine.ItemCode'
+',Item.ItemName'
+',Uom.UomName'
+',InvInBillLine.BillLineRemArk'
+',InvInBillLine.InvBillNoTaxAmount'
+' From InvInBillLine'
+' Join Item On InvInBillLine.ItemCode=Item.ItemCode'
+' Join Uom On Item.UomCode=Uom.UomCode'
+' Where InvInBillLine.InvBillId='+BillId+''
+' Order By InvInBillLine.InvBillLineNo';
AdoQry_Body.Open;
if CmBx_WhCode.Items.Count=0 then
begin
InitUsableWHCmBx(AdoQry_Tmp,UserCode,CmBx_WhCode,False);
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select BillType2Code+'' ''+BillType2Name As BillType2CodeName'
+' From BillType2'
+' Where io2=0';
AdoQry_Tmp.Open;
CmBx_BillType2Code.clear;
AdoQry_Tmp.First;
while not AdoQry_Tmp.Eof do
begin
CmBx_BillType2Code.Items.Add(AdoQry_Tmp.fieldbyname('BillType2CodeName').AsString);
AdoQry_Tmp.Next;
end;
CmBx_BillType2Code.ItemIndex:=0;
end;
AdoQry_Head.Close;
AdoQry_Head.SQL.Text:='Select'
+' InvInBill.WHCode'
+',InvInBill.WHCode+'' ''+Warehouse.WHName As WHCodeName'
+',InvInBill.InvBillNo'
+',InvInBill.InvBillDate'
+',InvInBill.WhPositionCode'
+',InvInBill.InvBillRemArk'
+',InvInBill.BillType2Code'
+',InvInBill.BillType2Code+'' ''+BillType2.BillType2Name as BillType2CodeName'
+' From InvInBill'
+' Join Warehouse On InvInBill.WHCode=Warehouse.WHCode '
+' Join BillType2 On InvInBill.BillType2Code=BillType2.BillType2Code'
+' Where InvInBill.InvBillId='+BillId+'';
AdoQry_Head.Open;
with AdoQry_Head do
begin
if Status<>'Add' then
begin
Edt_BillNo.Text:=fieldbyname('InvBillno').AsString;
MEdt_Date.Text:=fieldbyname('InvBilldate').AsString;
end
else
begin
Edt_BillNo.Text:='';
MEdt_Date.Text:=FormatDateTime('yyyy.mm.dd',Now);
end;
CmBx_WhCode.Text:=fieldbyname('whCode').AsString;
CmBx_BillType2Code.Text:=fieldbyname('BillType2Code').AsString;
Edt_RemArk.Text:=fieldbyname('InvBillremArk').AsString;
end;
end;
procedure TFrm_Inv_AmountAdjust_B.SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String);
begin
inherited;
if CurrentStatus='Add' then
begin
AnswerStatus:='Add';
EnableControls:='Edt_RemArk,';
end
else
begin
AnswerStatus:='ReadOnly';
EnableControls:='';
end;
end;
procedure TFrm_Inv_AmountAdjust_B.SaveHeadData;
begin
inherited;
with AdoQry_Head do
begin
fieldbyname('WHCode').AsString:=GetCode(CmBx_WhCode.Text);
fieldbyname('InvBillDate').AsString:=MEdt_Date.Text;
fieldbyname('InvBillRemArk').AsString:=Edt_RemArk.Text;
fieldbyname('BillType2Code').AsString:=GetCode(CmBx_BillType2Code.Text);
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select WhPosition.WhPositionCode'
+' From WhPosition'
+' Where WhPosition.WHCode='''+
GetCode(CmBx_WhCode.Text)+'''';
AdoQry_Tmp.Open;
fieldbyname('WhPositionCode').AsString:=AdoQry_Tmp.fieldbyname('WhPositionCode').AsString;
end;
end;
procedure TFrm_Inv_AmountAdjust_B.FormCreate(Sender: TObject);
begin
inherited;
Frm_Entry_Detail:=TFrm_Inv_AmountAdjust_D.Create(Self);
end;
procedure TFrm_Inv_AmountAdjust_B.SaveData;
var
BillNo,BillId:String;
m:Integer;
begin
inherited;
DBConnect.beginTrans;
try
if AdoQry_Body.RecordCount=0 then
begin
DispInfo('新增的单据没有记录,不允许保存!',1);
Abort;
end;
BillNo:=GetNo(DBConnect,AdoQry_Head.fieldbyname('WHCode').AsString+'R'
+FormatDateTime('yymm',AdoQry_Head.fieldbyname('InvBillDate').AsDateTime),'InvBill');
ChangeInvStatus(AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString,
FormatDateTime('yy.mm',AdoQry_Head.fieldbyname('InvBillDate').AsDateTime));
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert InvInBill(CurrencyCode,InvBillNo,WHCode,InvBillDate,InvBillMonth'
+',BillTypeCode,BillType2Code,EmployeeCode,Stk_EmployeeCode,WhPositionCode'
+',InvBillRemArk,AmountAdjust)'
+' Values('
+' ''00'''
+','''+BillNo+''''
+','''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+','''+AdoQry_Head.fieldbyname('InvBillDate').AsString+''''
+','''+FormatDateTime('yyyy.mm',AdoQry_Head.fieldbyname('InvBillDate').AsDateTime)+''''
+','''+Param1+''''
+','''+AdoQry_Head.fieldbyname('BillType2Code').AsString+''''
+','''+UserCode+''''
+','''+UserCode+''''
+','''+AdoQry_Head.fieldbyname('WhPositionCode').AsString+''''
+','''+AdoQry_Head.fieldbyname('InvBillRemArk').AsString+''''
+','+'1'+''
+')';
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select @@IDENTITY As BillId';
AdoQry_Tmp.open;
BillId:=AdoQry_Tmp.fieldbyname('BillId').AsString;
m:=1;
AdoQry_Body.First;
while not AdoQry_Body.Eof do
begin
if NeedChangeAveragePrice(AdoQry_Tmp,copy(MEdt_Date.text,1,7)) then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='If Not Exists ('
+' Select ApQty From AveragePrice'
+' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+')'
+' Insert AveragePrice(WHCode,ItemCode)'
+' Values('
+' '''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+')'
+' Update AveragePrice Set'
+' ApAmount=ApAmount+'+AdoQry_Body.fieldbyname('InvBillNoTaxAmount').AsString+''
+' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+' Update AveragePrice Set'
+' AveragePrice=Case When ApQty=0 Then AveragePrice'
+' Else ApAmount/ApQty end'
+' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+'''';
AdoQry_Tmp.ExecSQL;
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert InvInBillLine(InvBillId,InvBillLineNo'
+',ItemCode,InvBillQty,BillLineRemArk,InvBillNoTaxAmount,InvBillNoTaxPrice)'
+' Values('
+' '+BillId+''
+','+inttostr(m)+''
+','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+','+'0'+''
+','''+AdoQry_Body.fieldbyname('BillLineRemArk').asstring+''''
+','+AdoQry_Body.fieldbyname('InvBillNoTaxAmount').asstring+''
+','+'0'+''
+')' ;
AdoQry_Tmp.ExecSQL;
Inc(m);
AdoQry_Body.next;
end;
DBConnect.CommitTrans;
except
DBConnect.RollBackTrans;
DispInfo(' 存盘不成功,请稍后再试! ',1);
abort;
end;
AdoQry_HeadOld.Append;
AdoQry_HeadOld.fieldbyname('InvBillNo').AsString:=BillNo;
AdoQry_HeadOld.fieldbyname('WHCode').AsString:=GetCode(CmBx_WhCode.Text);
AdoQry_HeadOld.fieldbyname('WHName').AsString:=GetName(CmBx_WhCode.Text);
AdoQry_HeadOld.fieldbyname('InvBillDate').AsString:=MEdt_Date.Text;
AdoQry_HeadOld.fieldbyname('InvBillRemArk').AsString:=Edt_RemArk.Text;
AdoQry_HeadOld.fieldbyname('BillType2Code').AsString:=GetCode(CmBx_BillType2Code.Text);
AdoQry_HeadOld.fieldbyname('BillType2Name').AsString:=GetName(CmBx_BillType2Code.Text);
AdoQry_HeadOld.Post;
end;
procedure TFrm_Inv_AmountAdjust_B.DateCheck(Sender: TObject);
begin
inherited;
if not WHClsPeriodCheck(AdoQry_Tmp,GetCode(CmBx_WhCode.Text),Copy(TEdit(Sender).Text,1,7)) then
begin
TWinControl(Sender).SetFocus;
Abort;
end;
end;
procedure TFrm_Inv_AmountAdjust_B.Act_PreviewExecute(Sender: TObject);
begin
//inherited;
BillPrint(DBConnect,GetCode(CmBx_WhCode.text),edt_Billno.text,Param1,ModuleCode,True,False,True,'');
end;
procedure TFrm_Inv_AmountAdjust_B.Act_PrintExecute(Sender: TObject);
begin
//inherited;
BillPrint(DBConnect,GetCode(CmBx_WhCode.text),edt_Billno.text,Param1,ModuleCode,False,False,True,'');
end;
procedure TFrm_Inv_AmountAdjust_B.InitForm(AdOConnection: TAdOConnection;
FormStatus: String; AdoQuery: TAdoQuery);
begin
if DBConnect=nil then
begin
SetDBConnect(AdOConnection);
AdoQry_Body.Connection:=AdOConnection;
AdoQry_HeadNew.Connection:=AdOConnection;
AdoQry_HeadOld:=AdoQuery;
AdoQry_Head:=AdoQry_HeadNew;
end;
Status:=FormStatus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -