⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inv_salematerialaudit_b.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
          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 + -