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

📄 inv_amountoutadjust_b.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Inv_AmountoutAdjust_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_AmountoutAdjust_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;
    Label2: TLabel;
    edt_Dept: TEdit;
    lbl_Dept: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure DateCheck(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender: TObject);
    procedure edt_DeptExit(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_AmountoutAdjust_B: TFrm_Inv_AmountoutAdjust_B;

implementation

uses Sys_Global,Inv_AmountoutAdjust_D,Inv_Global;

{$R *.DFM}

procedure TFrm_Inv_AmountoutAdjust_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 InvOutBill'
      +' 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'
    +' InvOutBillLine.InvBillLineNo'
    +',InvOutBillLine.ItemCode'
    +',Item.ItemName'
    +',Uom.UomName'
    +',InvOutBillLine.BillLineRemArk'
    +',InvOutBillLine.InvBillNoTaxAmount'
    +' From InvOutBillLine'
    +' Join Item On InvOutBillLine.ItemCode=Item.ItemCode'
    +' Join Uom On Item.UomCode=Uom.UomCode'
    +' Where InvOutBillLine.InvBillId='+BillId+''
    +' Order By InvOutBillLine.InvBillLineNo';
  AdoQry_Body.Open;

  if CmBx_WhCode.Items.Count=0 then
  begin
    CmBx_WhCode.clear;
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Text:='select a.WHCode,w.WHName from WHAccessCtrl a,Warehouse w where a.EmployeeCode='''+userCode+''' and a.WHCode=w.WHCode Order by w.WHCode ';
      Open;
      if not Eof then
      begin
        First;
        while not Eof do
        begin
          CmBx_WhCode.Items.Add(fieldbyname('whCode').AsString+' '+fieldbyname('whName').asstring);
          Next;
        end;
        CmBx_WhCode.ItemIndex:=0;
      end;
    end;
//    InitUsableWHCmBx(AdoQry_Tmp,UserCode,CmBx_WhCode,False);
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Select BillType2Code+'' ''+BillType2Name As BillType2CodeName'
      +' From BillType2'
      +' Where io2=1';
    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'
    +' InvOutBill.WHCode'
    +',InvOutBill.WHCode+'' ''+Warehouse.WHName As WHCodeName'
    +',InvOutBill.InvBillNo'
    +',InvOutBill.InvBillDate'
    +',InvOutBill.WhPositionCode'
    +',InvOutBill.InvBillRemArk'
    +',InvOutBill.DeptCode'
    +',Dept.DeptName'
    +',InvOutBill.BillType2Code'
    +',InvOutBill.BillType2Code+'' ''+BillType2.BillType2Name as BillType2CodeName'
    +' From InvOutBill'
    +' left join Dept on InvOutBill.DeptCode=Dept.DeptCode'
    +' Join Warehouse On InvOutBill.WHCode=Warehouse.WHCode '
    +' Join BillType2 On InvOutBill.BillType2Code=BillType2.BillType2Code'
    +' Where InvOutBill.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;
    edt_Dept.Text:=fieldbyname('DeptCode').AsString;
    lbl_Dept.Caption:=fieldbyname('DeptName').AsString;
  end;
end;

procedure TFrm_Inv_AmountoutAdjust_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_AmountoutAdjust_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_AmountoutAdjust_B.FormCreate(Sender: TObject);
begin
  inherited;
  Frm_Entry_Detail:=TFrm_Inv_AmountoutAdjust_D.Create(Self);
end;

procedure TFrm_Inv_AmountoutAdjust_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+'C'
      +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 InvOutBill(CurrencyCode,InvBillNo,WHCode,InvBillDate,InvBillMonth'
      +',BillTypeCode,BillType2Code,EmployeeCode,Stk_EmployeeCode,DeptCode,WhPositionCode'
      +',InvBillRemArk,AmountAdjust,InvBillwhchck)'
      +' Values('
      +' ''00'''
      +','''+BillNo+''''
      +','''+AdoQry_Head.fieldbyname('WHCode').AsString+''''
      +','''+AdoQry_Head.fieldbyname('InvBillDate').AsString+''''
      +','''+FormatDateTime('yyyy.mm',AdoQry_Head.fieldbyname('InvBillDate').AsDateTime)+''''
      +','''+Param1+''''
      +','''+'100'+''''
      +','''+UserCode+''''
      +','''+UserCode+''''
      +','''+edt_Dept.Text+''''
      +','''+AdoQry_Head.fieldbyname('WhPositionCode').AsString+''''
      +','''+AdoQry_Head.fieldbyname('InvBillRemArk').AsString+''''
      +','+'1,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 InvOutBillLine(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.fieldbyname('DeptCode').AsString:=edt_Dept.Text;
//  AdoQry_HeadOld.fieldbyname('DeptName').AsString:=lbl_Dept.Caption;
  AdoQry_HeadOld.Post;
end;

procedure TFrm_Inv_AmountoutAdjust_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_AmountoutAdjust_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_AmountoutAdjust_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_AmountoutAdjust_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;

procedure TFrm_Inv_AmountoutAdjust_B.edt_DeptExit(Sender: TObject);
begin
  inherited;
  with AdoQry_Tmp do
  begin
    Close;
    sql.text:='select DeptName from Dept where DeptCode='+quotedstr(edt_Dept.text);
    open;
    if not eof then
      lbl_Dept.Caption:=fieldbyname('DeptName').AsString
    else
    begin
      DispInfo('部门代码有误,请重新输入!',1);
      edt_Dept.text:='';
    end;
  end;
end;

end.

⌨️ 快捷键说明

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