📄 inv_saleproductaudit_b.pas
字号:
if Tempstr<>'' then
begin
DispStr:=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;}
if AdoQry_Head.fieldbyname('MpsSale').AsString='1' then
begin
//自动冲销主计划结合点的处理
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select MrpParamValueN From MrpParam'
+' Where MrpParamCode=''autoBalanceMps''';
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MrpParamValueN').AsString='1' then
begin
//重点修改
Float_Temp1:=AdoQry_Body.fieldbyname('InvBillQty').AsFloat;
if Float_Temp1>=0 then
begin
//由上往下加已经完成数量
AdoQuery.Close;
AdoQuery.Connection:=DBConnect;
AdoQuery.SQL.Text:='Select MpsId,MpsDate,MpsFinishQty,MpsQty-MpsFinishQty As AQty From Mps'
+' Where MpsStatus=3'
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+' Order By MpsDate';
AdoQuery.Open;
if AdoQuery.RecordCount=0 then
begin
DispStr:=' 主生产计划中找不到相应记录';
Abort;
end;
AdoQuery.First;
while not AdoQuery.Eof do
begin
if AdoQuery.fieldbyname('AQty').AsFloat<=Float_Temp1 then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsQty'
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
Float_Temp1:=Float_Temp1-AdoQuery.fieldbyname('AQty').AsFloat;
end
else
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsFinishQty+'+FloatToStr(Float_Temp1)
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
Float_Temp1:=0;
Break;
end;
AdoQuery.Next;
end;
if Float_Temp1<>0 then
begin
//如果已完成数量已经加满,则直接把剩下的加在最后一项上
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsFinishQty+'+FloatToStr(Float_Temp1)
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
end;
end
else// if Float_Temp1<0 then
begin//由下往上把已经完成数量减去
AdoQuery.Close;
AdoQuery.Connection:=DBConnect;
AdoQuery.SQL.Text:='Select MpsId,MpsDate,MpsFinishQty,MpsQty-MpsFinishQty As AQty From Mps'
+' Where MpsStatus=3'
+' And ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
+' Order By MpsDate';
AdoQuery.Open;
if AdoQuery.RecordCount=0 then
begin
DispStr:=' 主生产计划中找不到相应记录';
Abort;
end;
AdoQuery.Last;
while not AdoQuery.Bof do
begin
if AdoQuery.fieldbyname('MpsFinishQty').AsFloat<=-Float_Temp1 then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=0'
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
Float_Temp1:=Float_Temp1+AdoQuery.fieldbyname('MpsFinishQty').AsFloat;
end
else
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsFinishQty+'+FloatToStr(Float_Temp1)
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
Float_Temp1:=0;
Break;
end;
AdoQuery.Prior;
end;
if Float_Temp1<>0 then
begin//如果已经完成数量都减完了,剩下数量在最后一项减去
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsFinishQty+'+FloatToStr(Float_Temp1)
+' Where MpsId='+AdoQuery.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQuery.fieldbyname('MpsId').AsInteger);
end;
end;
end
else
begin
//不自动冲销主计划结合点的处理
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsFinishQty=MpsFinishQty+'+
AdoQry_Body.fieldbyname('InvBillQty').AsString+','
+' MpsOutQty=MpsOutQty-('+
AdoQry_Body.fieldbyname('InvBillSfcQty').AsString+') '
+' Where MpsId='+AdoQry_Body.fieldbyname('MpsId').AsString+'';
AdoQry_Tmp.ExecSQL;
OperationMps(AdoQry_Tmp,AdoQry_Body.fieldbyname('ItemCode').AsString
,'Mps',2,AdoQry_Body.fieldbyname('MpsId').AsInteger);
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select MrpParamValueN From MrpParam'
+' Where MrpParamCode=''autoCloseMps''';
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MrpParamValueN').AsString='1' then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Mps Set'
+' MpsStatus=4'
+' Where MpsFinishQty>=MpsQty';
AdoQry_Tmp.ExecSQL;
end;
end;
AdoQry_Body.Next;
end;
DBConnect.CommitTrans;
except
DBConnect.RollBackTrans;
DispInfo(DispStr,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_SaleProductAudit_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_SaleProductAudit_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_SaleProductAudit_B.FormCreate(Sender: TObject);
begin
inherited;
TlBtn_CancelCheck.Action:=Act_auto;
DBGridEh.Options:=DBGridEh.Options+[dgEditing]-[dgRowselect];
end;
procedure TFrm_Inv_SaleProductAudit_B.Act_autoExecute(Sender: TObject);
begin
inherited;
AdoQry_Body.First;
while not AdoQry_Body.Eof do
begin
if (AdoQry_Body.fieldbyname('CurrentInvQty').AsString<>'')
and (AdoQry_Body.fieldbyname('InvBillSfcQty').AsString<>'') then
begin
AdoQry_Body.Edit;
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;
AdoQry_Body.Post;
end;
AdoQry_Body.Next;
end;
end;
procedure TFrm_Inv_SaleProductAudit_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_SaleProductAudit_B.AdoQry_BodyBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
procedure TFrm_Inv_SaleProductAudit_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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -