📄 inv_salematerialaudit_b.pas
字号:
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select Case When ApQty=0 Then AveragePrice'
+' Else ApAmount/ApQty end As AveragePrice'
+' From AveragePrice'
+' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+'''';
AdoQry_Tmp.Open;
Bill_Count:=AdoQry_Tmp.fieldbyname('AveragePrice').AsString;
end
else
begin
Bill_Count:='0';
end
end
else
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select SPPrice'
+' From StandardPrice'
+' Where SPStArtMonth='''+Copy(MEdt_InvBillDate.Text,1,7)+''''
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+'''';
AdoQry_Tmp.Open;
Bill_Count:=AdoQry_Tmp.fieldbyname('SPPrice').AsString;
end;
if Bill_Count='' then
Bill_Count:='0';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update InvOutBillLine Set'
+' InvBillNoTaxPrice='+Bill_Count+''
+',InvBillQty='+AdoQry_Body.fieldbyname('InvBillQty').AsString+''
+',BillLineRemArk='''+AdoQry_Body.fieldbyname('BillLineRemArk').AsString+''''
+' Where InvBillLineNo='''+AdoQry_Body.fieldbyname('InvBillLineNo').AsString+''''
+' And InvBillId='''+AdoQry_Head.fieldbyname('InvBillId').AsString+'''';
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update InvOutBillLine Set'
+' InvBillNoTaxAmount=Round(InvBillNoTaxPrice*InvBillQty,2)'
+' Where InvBillLineNo='''+AdoQry_Body.fieldbyname('InvBillLineNo').AsString+''''
+' And InvBillId='''+AdoQry_Head.fieldbyname('InvBillId').AsString+'''';
AdoQry_Tmp.ExecSQL;
//因为数量变动了,重新计算实际售出金额
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update RealSalePrice Set'
+' InvBillSaleAmount=InvBillSalePrice*'+AdoQry_Body.fieldbyname('InvBillQty').AsString+''
+',InvBillNoTaxSaleAmount=InvBillNoTaxSalePrice*'+AdoQry_Body.fieldbyname('InvBillQty').AsString+''
+' Where InvBillLineNo='''+AdoQry_Body.fieldbyname('InvBillLineNo').AsString+''''
+' And InvBillId='''+AdoQry_Head.fieldbyname('InvBillId').AsString+'''';
AdoQry_Tmp.ExecSQL;
//更新当前库存
Tempstr:=UpdateInv(AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString
,AdoQry_Head.fieldbyname('WhPositionCode').AsString
,AdoQry_Body.fieldbyname('ItemCode').AsString
,'(-('+AdoQry_Body.fieldbyname('InvBillQty').AsString+'))'
,NeedChangePrice,True);
if Tempstr<>'' then
begin
DispString:=Tempstr;
Abort;
end;
if AdoQry_Body.fieldbyname('BatchNo').AsString<>'' then
begin
if not BatchInvCheck(AdoQry_Tmp,AdoQry_Body.fieldbyname('BatchNo').AsString,
'C',AdoQry_Head.fieldbyname('WHCode').AsString,
AdoQry_Head.fieldbyname('WhPositionCode').AsString,
AdoQry_Body.fieldbyname('InvBillQty').AsFloat)then
Abort;
ChangeBatchInv(AdoQry_Tmp,AdoQry_Body.fieldbyname('BatchNo').AsString,
'C',MEdt_InvBillDate.Text,AdoQry_Head.fieldbyname('WHCode').AsString,
AdoQry_Head.fieldbyname('WhPositionCode').AsString,
AdoQry_Body.fieldbyname('InvBillQty').AsFloat);
end;
AdoQry_Body.Next;
end;
DBConnect.CommitTrans;
except
DBConnect.RollBackTrans;
DispInfo(DispString,3);
Abort;
end;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('InvBillWHChck').AsInteger:=1;
AdoQry_Head.fieldbyname('InvBillDate').AsString:=MEdt_InvBillDate.Text;
AdoQry_Head.Post;
Act_Check.Enabled:=False;
Act_auto.Enabled:=False;
MEdt_InvBillDate.Enabled:=False;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.Act_PreviewExecute(Sender: TObject);
begin
//inherited;
BillPrint(AdoQry_Tmp.Connection,GetCode(Lbl_Warehouse.Caption),Lbl_InvBillNo.Caption,Param1,ModuleCode,True,False,True,'');
end;
procedure TFrm_Inv_SaleMaterialAudit_B.Act_PrintExecute(Sender: TObject);
begin
//inherited;
BillPrint(AdoQry_Tmp.Connection,GetCode(Lbl_Warehouse.Caption),Lbl_InvBillNo.Caption,Param1,ModuleCode,False,False,True,'');
end;
procedure TFrm_Inv_SaleMaterialAudit_B.FormCreate(Sender: TObject);
begin
inherited;
TlBtn_CancelCheck.Action:=Act_auto;
DBGridEh.Options:=DBGridEh.Options+[dgEditing]-[dgRowselect];
end;
procedure TFrm_Inv_SaleMaterialAudit_B.Act_autoExecute(Sender: TObject);
var
Qty:Double;
begin
inherited;
AdoQry_Body.First;
while not AdoQry_Body.Eof do
begin
AdoQry_Body.Edit;
if (AdoQry_Body.fieldbyname('CurrentInvQty').AsString<>'')
and (AdoQry_Body.fieldbyname('InvBillSfcQty').AsString<>'') then
begin
if(AdoQry_Body.fieldbyname('CurrentInvQty').AsFloat>
AdoQry_Body.fieldbyname('InvBillSfcQty').AsFloat)
or(AdoQry_Body.fieldbyname('CurrentInvQty').AsFloat<0)then
AdoQry_Body.fieldbyname('InvBillQty').AsFloat:=
AdoQry_Body.fieldbyname('InvBillSfcQty').AsFloat
else
AdoQry_Body.fieldbyname('InvBillQty').AsFloat:=
AdoQry_Body.fieldbyname('CurrentInvQty').AsFloat;
Qty:=AdoQry_Body.fieldbyname('InvBillQty').AsFloat;
if BatchCtrl(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString) then
begin
AdoQry_Body.fieldbyname('BatchNo').AsString:=
GiveBatchNo(AdoQry_Tmp,GetCode(Lbl_Warehouse.Caption),
GetCode(Lbl_WhPosition.Caption),
AdoQry_Body.fieldbyname('ItemCode').AsString,
MEdt_InvBillDate.Text,Qty,
AdoQry_Body.fieldbyname('BatchNo').AsString);
AdoQry_Body.fieldbyname('InvBillQty').AsFloat:=Qty;
end
else
AdoQry_Body.fieldbyname('BatchNo').AsString:='';
end;
AdoQry_Body.Post;
AdoQry_Body.Next;
end;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.AdoQry_BodyInvBillQtyChange(
Sender: TField);
begin
inherited;
if((AdoQry_BodyInvBillQty.AsFloat<0)
and(AdoQry_BodyInvBillQty.AsFloat<AdoQry_Body.fieldbyname('InvBillSfcQty').AsFloat))
or((AdoQry_BodyInvBillQty.AsFloat>0)
and((AdoQry_BodyInvBillQty.AsFloat>AdoQry_Body.fieldbyname('InvBillSfcQty').AsFloat)
or(AdoQry_BodyInvBillQty.AsFloat>AdoQry_Body.fieldbyname('CurrentInvQty').AsFloat))) then
begin
DispInfo(' 数量输入错误,超出正常范围 ',3);
Abort;
end;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.AdoQry_BodyBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.DateCheck(Sender: TObject);
begin
inherited;
if WHClsPeriodCheck(AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString,
Copy(TEdit(Sender).Text,1,7))=False then
begin
TWinControl(Sender).SetFocus;
Abort;
end;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.DBGridEhKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if (Key=120)and(Act_Check.Enabled)and(DBGridEh.SelectedField.FieldName='BatchNo') then
begin
if DBGridEh.SelectedField.DataSet.State<>dsEdit then
AdoQry_Body.Edit;
AdoQry_Body.fieldbyname('BatchNo').AsString:=BatchHint(DBConnect,
AdoQry_Body.fieldbyname('ItemCode').AsString,'',
AdoQry_Head.fieldbyname('WHCode').AsString,
AdoQry_Head.fieldbyname('WhPositionCode').AsString);
end;
end;
procedure TFrm_Inv_SaleMaterialAudit_B.AdoQry_BodyBatchNoChange(
Sender: TField);
begin
inherited;
if Sender.AsString<>'' then
begin
if not BatchNoCheck(AdoQry_Tmp,Sender.AsString,
AdoQry_Body.fieldbyname('ItemCode').AsString,'',
MEdt_InvBillDate.Text) then
begin
Sender.AsString:='';
Abort;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -