inv_saleproduct_d.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 595 行 · 第 1/2 页

PAS
595 行
字号
      begin
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.Text:='Select MpsFinishQty'
          +' From Mps Where MpsId='+Edt_MpsId.Text+'';
        AdoQry_Tmp.Open;
        if (AdoQry_Tmp.fieldbyname('MpsFinishQty').AsFloat+StrToFloat(Edt_InvBillQty.Text))<0 then
        begin
          DispInfo('冲销数量不能大于累计完成数量!',3);
          TWinControl(Sender).SetFocus;
          Abort;
        end;
      end;
    end;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.FormCreate(Sender: TObject);
begin
  inherited;
  LineCount:=-1;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_MpsIdExit(Sender: TObject);
var
  BookmArk:TBookmArk;
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if Param2<>'NoMps' 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
      if Edt_MpsId.Text='' then
      begin
        with TFrm_Inv_MpsHint.Create(Self) do
        begin
          InitForm(DBConnect,ExtEdt_ItemCode.Text,Lbl_ItemName.Caption,Edt_MpsId.Text);
          if ShowModal=mrOk then
            TEdit(Sender).Text:=MpsID;
          Release;
        end;
        TWinControl(Sender).SetFocus;
        Abort;
      end;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Select MpsId'
        +' From Mps Where MpsId='+Edt_MpsId.Text+''
        +' And MpsStatus=3'
        +' And ItemCode='''+ExtEdt_ItemCode.Text+'''';
      AdoQry_Tmp.Open;
      if AdoQry_Tmp.fieldbyname('MpsId').AsString='' then
      begin
        with TFrm_Inv_MpsHint.Create(Self) do
        begin
          InitForm(DBConnect,ExtEdt_ItemCode.Text,Lbl_ItemName.Caption,Edt_MpsId.Text);
          if ShowModal=mrOk then
            TEdit(Sender).Text:=MpsID;
          Release;
        end;
        TWinControl(Sender).SetFocus;
        Abort;
      end;
      if (Status='Add')or((Status<>'Add')and(
        AdoQry_Body.fieldbyname('MpsId').AsString<>TEdit(Sender).Text))then
      begin
        BookmArk:=AdoQry_Body.GetBookmArk;
        AdoQry_Body.First;
        while not AdoQry_Body.Eof do
        begin
          if(AdoQry_Body.fieldbyname('MpsId').AsString=TEdit(Sender).Text)then
          begin
            DispInfo(' 该"主生产计划ID"在本单据中已经存在,不允许增加! ',3);
            TWinControl(Sender).SetFocus;
            AdoQry_Body.GotoBookmArk(BookmArk);
            AdoQry_Body.FreeBookmArk(BookmArk);
            Abort;
          end;
          AdoQry_Body.Next;
        end;
        AdoQry_Body.GotoBookmArk(BookmArk);
        AdoQry_Body.FreeBookmArk(BookmArk);
      end;
    end
    else
    begin
      TEdit(Sender).Text:='';
    end;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_MpsIdKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if(Key=120)then
  begin
    with TFrm_Inv_MpsHint.Create(Self) do
    begin
      InitForm(DBConnect,ExtEdt_ItemCode.Text,Lbl_ItemName.Caption,Edt_MpsId.Text);
      if ShowModal=mrOk then
        TEdit(Sender).Text:=MpsID;
      Release;
    end;
    TWinControl(Sender).SetFocus;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_InvBillQtyChange(Sender: TObject);
begin
  inherited;
  if LockFlag=0 then
  begin
    LockFlag:=1;
    try
      AllChange(Sender);
      Edt_InvBillSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(TEdit(Sender).Text)
        *StrToFloat(Edt_InvBillSalePrice.Text));
      Edt_InvBillNoTaxSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(TEdit(Sender).Text)
        *StrToFloat(Edt_InvBillNoTaxSalePrice.Text));
    except
      LockFlag:=0;
    end;
    LockFlag:=0;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_InvBillSalePriceChange(
  Sender: TObject);
begin
  inherited;
  if LockFlag=0 then
  begin
    LockFlag:=1;
    try
      AllChange(Sender);
      Edt_InvBillNoTaxSalePrice.Text:=FloatToStr((StrToFloat(Edt_InvBillSalePrice.Text)/
        (1+AdoQry_Head.fieldbyname('InvBillTAXRATE').AsFloat/100)));
      Edt_InvBillSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillSalePrice.Text));
      Edt_InvBillNoTaxSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillNoTaxSalePrice.Text));
    except
      LockFlag:=0;
    end;
    LockFlag:=0;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_InvBillSaleAmountChange(
  Sender: TObject);
begin
  inherited;
  if LockFlag=0 then
  begin
    LockFlag:=1;
    try
      AllChange(Sender);
      if StrToFloat(Edt_InvBillQty.Text)<>0 then
      Edt_InvBillSalePrice.Text:=FloatToStr(StrToFloat(Edt_InvBillSaleAmount.Text)
        /StrToFloat(Edt_InvBillQty.Text));
      Edt_InvBillNoTaxSalePrice.Text:=FloatToStr((StrToFloat(Edt_InvBillSalePrice.Text)/
        (1+AdoQry_Head.fieldbyname('InvBillTAXRATE').AsFloat/100)));
      Edt_InvBillNoTaxSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillNoTaxSalePrice.Text));
    except
      LockFlag:=0;
    end;
    LockFlag:=0;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_InvBillNoTaxSalePriceChange(
  Sender: TObject);
begin
  inherited;
  if LockFlag=0 then
  begin
    LockFlag:=1;
    try
      AllChange(Sender);
      Edt_InvBillSalePrice.Text:=FloatToStr((StrToFloat(Edt_InvBillNoTaxSalePrice.Text)*
        (1+AdoQry_Head.fieldbyname('InvBillTAXRATE').AsFloat/100)));
      Edt_InvBillSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillSalePrice.Text));
      Edt_InvBillNoTaxSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillNoTaxSalePrice.Text));
    except
      LockFlag:=0;
    end;
    LockFlag:=0;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_InvBillNoTaxSaleAmountChange(
  Sender: TObject);
begin
  inherited;
  if LockFlag=0 then
  begin
    LockFlag:=1;
    try
      AllChange(Sender);
      if StrToFloat(Edt_InvBillQty.Text)<>0 then
      Edt_InvBillNoTaxSalePrice.Text:=FloatToStr(StrToFloat(Edt_InvBillNoTaxSaleAmount.Text)
        /StrToFloat(Edt_InvBillQty.Text));
      Edt_InvBillSalePrice.Text:=FloatToStr((StrToFloat(Edt_InvBillNoTaxSalePrice.Text)*
        (1+AdoQry_Head.fieldbyname('InvBillTAXRATE').AsFloat/100)));
      Edt_InvBillSaleAmount.Text:=FormatFloat('#0.00',StrToFloat(Edt_InvBillQty.Text)
        *StrToFloat(Edt_InvBillSalePrice.Text));
    except
      LockFlag:=0;
    end;
    LockFlag:=0;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.ExtEdt_ItemCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  InvFieldName:String;
begin
  inherited;
  if Key=120 then
  begin           
    InvFieldName:=GetInvField(AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').
        AsString
      ,AdoQry_Head.fieldbyname('WhPositionCode').AsString,'CurrentInv');
    Frm_Sys_Hint:=TFrm_Sys_Hint.Create(nil);
    if Param2<>'NoMps' then
    begin
      Frm_Sys_Hint.InitForm(DBConnect,
        'Select Distinct Mps.ItemCode As ''物料代码'''
        +',CurrentInv.'+InvFieldName+' As ''库存量'''
        +',Item.ItemName As ''物料描述'''
        +' From Mps Join Item On Mps.ItemCode=Item.ItemCode'
        +' And Item.CanSale=1 And Item.ItemUsable=1'
        +' Left Join (Select ItemCode,'+InvFieldName
              +' From CurrentInv'
              +' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
              +' And WhPositionCode='''+AdoQry_Head.fieldbyname('WhPositionCode').AsString+''''
        +') CurrentInv On Mps.ItemCode=CurrentInv.ItemCode'
        +' Where MpsStatus=3'
        );
    end
    else
    begin
      Frm_Sys_Hint.InitForm(DBConnect,
        'Select Item.ItemCode As ''物料代码'''
        +',CurrentInv.'+InvFieldName+' As ''库存量'''
        +',Item.ItemName As ''物料描述'''
        +' From Item'
        +' Join (Select ItemCode,'+InvFieldName
              +' From CurrentInv'
              +' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
              +' And WhPositionCode='''+AdoQry_Head.fieldbyname('WhPositionCode').AsString+''''
        +') CurrentInv On Item.ItemCode=CurrentInv.ItemCode'
        );
    end;
    if Frm_Sys_Hint.ShowModal=mrOk then
      TEdit(Sender).Text:=Frm_Sys_Hint.GetValueByFieldIndex(0);
    Frm_Sys_Hint.Release;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_BatchNoExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if TEdit(Sender).ReadOnly=False then
  begin
    if not BatchNoCheck(AdoQry_Tmp,TEdit(Sender).Text,ExtEdt_ItemCode.Text
      ,'',AdoQry_Head.fieldbyname('InvBillDate').AsString) then
    begin
      TWinControl(Sender).SetFocus;
      Abort;
    end;
  end;
end;

procedure TFrm_Inv_SaleProduct_D.Edt_BatchNoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if(Key=120)and(TEdit(Sender).ReadOnly=False)then
    TEdit(Sender).Text:=BatchHint(DBConnect,ExtEdt_ItemCode.Text
      ,'',AdoQry_Head.fieldbyname('WHCode').AsString
      ,AdoQry_Head.fieldbyname('WhPositionCode').AsString);
end;

end.

⌨️ 快捷键说明

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